· 9 years ago · Nov 13, 2016, 02:34 AM
1BIMCP Network in Malabo
2=======================
3
4AFAIK, each major physical location that MCDI is connecting to the Internet is connected to a base station
5run by the Internet Service Provider IPX. They are not connected by wires, but instead by point-to-point
6microwave radios. It took me having a few conversations with the local IPX guy Oscar until we delved into
7these details. Sometimes, like yesterday when it rained and the base station lost power, connectivity to
8the Internet can be interrupted. This can happen if the microwave connection is interrupted or has
9significant interference severing the connection to the base station, or if the base station itself is
10offline.
11
12I had been wondering why the apartment they keep putting me up in keeps losing its WAN IP. Oscar told me
13the apartment connects to IPX the same way as the office building does. If there is a problem with the
14wireless connection between the building and the base station, no external network. This could explain
15why other locations don't have the same issues. The problem could just be a flaky radio setup from this
16location.
17
18Below are some details about the network on the BIMCP compound here in Malabo. Note that this *does not*
19include details about the apartment setups, nor does it include the setup for the EGMVI office which is
20another location entirely. Apparently these are all administered by IPX. If I can, I will try to get
21more information about these as well.
22
23
24====
25
26
27* google play was wedged with connection errors - clearing cache partition seemed to unwedge it
28 * power off
29 * hold power+vol-up(right one)+home
30 * clear cache partition
31 * reboot
32* tried to install application updates through Play
33
34This above seemed to sove the immediate problem, but connections on the tablet keep timing out.
35I checked on another and it seems to work better, but still fails occasionally.
36
37I installed a development version of the CIMS app on the tablet so I could get more diagnostic
38information, but network rates seemed so slow they didn't register on the
39
40Updates were patchy, some installed, but they frequently reset and after the initial successes the rest failed.
41
42Looked into tablet sync issues (timeouts, throwing errors from sync adapter). I attempted to synchronize to the latest CIMS data:
43
44Based on the tests I ran on these tabletseven the direct download is slow. I tested this when I came out last time and it was fast with a similar download size. I wonder whether
45this has to do with the increased downloads (shouldn't... sync optimization should have decreased load) or a change in the network config somewhere (shaping?).
46
47* Not sure... for a while, it seemed like the two tablets were very different in their relative speeds... then play stopped working for the other... then... it came back.
48
49even installing the app timed out multiple times 12:35 WAT
50
51seems that even installing updates on my laptop is having problems and can't re-install non-dev version of cims from Play - 12:47pm
52
53I sent Dave an email since Jordan mentioned that he fixed an issue similar to what I'm seeing. Jordan sent him the tablet and he said replaced a wi-fi driver or something and
54the tablet came back with Julie.
55
56In an attempt to isolate the problem, I configure the tablet (using cims-tablet 2.6.4) to connect to a development version of openhds on own machine over the wi-fi network.
57I manually requested a sync and got the following stack trace from the sync process when it failed:
58
5910-25 10:47:15.356 7489-7520/org.openhds.mobile:sync E/SyncUtils: sync io failure
60 java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)
61 at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:592)
62 at libcore.io.IoBridge.recvfrom(IoBridge.java:556)
63 at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
64 at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
65 at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
66 at com.android.okio.Okio$2.read(Okio.java:116)
67 at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:51)
68 at com.android.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:522)
69 at com.android.okio.RealBufferedSource.exhausted(RealBufferedSource.java:61)
70 at com.android.okio.InflaterSource.refill(InflaterSource.java:96)
71 at com.android.okio.InflaterSource.read(InflaterSource.java:62)
72 at com.android.okio.GzipSource.read(GzipSource.java:75)
73 at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:174)
74 at java.io.InputStream.read(InputStream.java:162)
75 at org.openhds.mobile.utilities.SyncUtils.streamToFile(SyncUtils.java:252)
76 at org.openhds.mobile.utilities.SyncUtils.downloadUpdate(SyncUtils.java:428)
77 at org.openhds.mobile.syncadpt.SyncAdapter.onPerformSync(SyncAdapter.java:26)
78 at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
79 Caused by: android.system.ErrnoException: recvfrom failed: ETIMEDOUT (Connection timed out)
80 at libcore.io.Posix.recvfromBytes(Native Method)
81 at libcore.io.Posix.recvfrom(Posix.java:161)
82 at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:250)
83 at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
84 at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)Â
85 at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)Â
86 at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)Â
87 at com.android.okio.Okio$2.read(Okio.java:116)Â
88 at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:51)Â
89 at com.android.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:522)Â
90 at com.android.okio.RealBufferedSource.exhausted(RealBufferedSource.java:61)Â
91 at com.android.okio.InflaterSource.refill(InflaterSource.java:96)Â
92 at com.android.okio.InflaterSource.read(InflaterSource.java:62)Â
93 at com.android.okio.GzipSource.read(GzipSource.java:75)Â
94 at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:174)Â
95 at java.io.InputStream.read(InputStream.java:162)Â
96 at org.openhds.mobile.utilities.SyncUtils.streamToFile(SyncUtils.java:252)Â
97 at org.openhds.mobile.utilities.SyncUtils.downloadUpdate(SyncUtils.java:428)Â
98 at org.openhds.mobile.syncadpt.SyncAdapter.onPerformSync(SyncAdapter.java:26)Â
99 at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
100
101This seems to suggest that the problem isn't actually an internet issue, but rather with either the tablet's wifi-adapter, or, with the wi-fi access point itself.
102
103Next up, try connecting computer and tablet using alternative network (another access point) and see if it still occurs. Also, could try this outside of the
104office if it's suspected the the wifi setup here is to blame.
105
106Using wifi-analyzer, there appear to be a lot of overlapping access points in the office. Using the signal section, I was able to count 32 access points with fairly strong
107signal. Additionally, the BIMCP access points are mainly all on channel 1.
108
109Also, there are a number of access points sharing the same SSID. I'm not sure what setup they are using, but fluctuations in the power levels could actually cause
110clients to bounce between them. The highest powered one (and the one the tablet is connected to from Jordan's office is the one with MAC e4:8d:8c:9c:2c:77).
111
112Interestingly enough, I grabbed one of the additional tablets Jordan informed me about. There were three tucked away in a cubby in his desk. I started one up and it
113immediately started syncing down CIMS data. On the first attempt, it succeeded, I was able to install the update, and it started indexing for search since it was running
1142.7-alpha.
115
116Not sure why, but a little after noon, the tablet I have been struggling with sync'ed successfully - but to my machine (since i had configured it to point there). If
117AP congestion is the issue, it could explain this.
118
119Since the error from the stacktrace was a timeout I modified the tablet's sync code to see the read and connect timeout values. They were both zero.
120
121The fact the tablet times out at all is odd given these settings: from the android API javadocs:
122
123From setConnectTimeout:
124 The default value of 0 causes us to do a blocking connect. This does not mean we will never time out, but it probably means you'll get a TCP timeout
125 after several minutes.
126
127From setReadTimeout:
128 The default value of 0 disables read timeouts; read attempts will block indefinitely.
129
130For future reference, the tablet I was testing on is (from Android device settings):
131
132Device name: GISOPS (SM-T530NU) 5
133Model number: SM-T530NU
134
13510/26/2016
136----------
137
138So, I moved to Akum's office to check whether the slightly different wi-fi profile allowed the tablet to work better. It wasn't
139even able to authenticate to the access point. However, trying it on my laptop it worked immediately (though DNS was slow).
140
141Akum mentioned that my issues with the tablet might have to do with the fact that the MAC address wasn't setup on this AP (my words).
142This would be strange though, since the APs are all using the same SSID and when you swap based on signal intensity, you'd get
143interrupted service since you wouldn't have network access on the other AP when you swap. When using the same SSIDs, I would expect
144that you would have uniform access to them. Alternatively, you could split the SSIDs into access groups to restrict access.
145
146Because I had problems, Akum said he would go check with 'someone'. He ended up calling Oscar and we had a quick chat about the
147network. I am not sure if he and I were understanding each other 100%, but he seemed to confirm my understanding of the wi-fi
148configuration. Multiple APs sharing the same SSID with separate MAC filtering setups. Most APs with the BIMCP SSID share the
149same radio channel (1), but there were a few that were using alternative channels (3 and 10).
150
151MIS
152---
153They use the existing data on the tablet to select the individuals to be surveyed.
154
155individuals were selected based on admin data from jordan
156
157he said that previous survey sampled more coursely, but they decided in 2015 to sample only communities with >20 houses
158
159Jackie at London school determined selection rates for a manipulated the list of communities to allow them to select from more
160communities with the same amount of people.
161
162When the fieldworkers visit the locations, they are doing bloodwork as well. Akum said that the fieldworkers had to do more
163work at houses with more children so fieldowkers were avoiding.
164
165Akum did the random selection based on the complete location dataset. He added a random number so that each location had a value.
166He then sorted the spreadsheet based on community and that value. The remaining selection of n locations per sampling community
167Akum said he did in Stata since it was easier than in Excel.
168
169Each fieldworker got a password (from me): 24 fieldworkers, 6 supervisors managing 4 fieldworkers, 2 nurses and 2 coordinators
170the coordinators are usually interns to assist supervisors that encounter problems.
171
172Akum 'borrowed' staff members from Jordan to work as supervisors.
173
174Each fieldworker carries bag of consumables and the preparation team would help them. The prep team would also give them a packet
175including the map they would be working in and the houses they need to visit. A fieldworker would each get a packet.
176
177Akum used a powerpoint to show me some details about the MIS organization, I asked him what it was for and he said it was for
178a presentation for the ministry.
179
180Akum had written automation to create a printable guide for the preparation team to put together the packets for individuals.
181It is apparent that there is a lot of human effort in just creating the packets. The fieldworkers would bring back the maps
182and they still have all of the ones they sent out, with the information filled out.
183
184There was a workflow around determining the location status on the sheet - they users were supposed to check with their
185supervisor before marking locations a certain status.
186
187I asked Akum how they managed to share the 2 nurses. Basically, they would pick locations surrounding a common center.
188People testing positive for parasites would be sent to the nurse's station in the center and be treated. The interviewers
189would give those positive a card that they would take to the station. The nurses would capture the information about who
190they treated and would record this in a separate register and collect the cards and return the register and the cards to
191the office at the end of the day.
192
193Akum is maintaining his own individual data outside of the CIMS data set. He said that they would try to reconcile the
194paper data with the individual data dump from the CIMS. I asked how this would feed back into that core data set and
195he said that as long as they seemed relatively consistent (my words).
196
197I asked what did you do when they counts at the location didn't match? He said that he effectively maintains it in his
198own database. I asked what the final destination is and it was a bit confusing at first. He ended up saying that it ends
199up being converted into a stata file and sent to the London school for anaylsis. He said he would send the file to Dianna
200and Dianna would join them up in Stata.
201
202Seems that we are segmenting data collection and incorporation of that information. Also, there is a lot paper
203reconciliation in the process. It seems that we should be able to reduce or eliminate that part of the process,
204but it is important that it's reliable even without internet access - or it's likely that it wouldn't be consistently used.
205
206I asked Akum why the paper record in addition to the electronic record. He said that the measurements for the diagnostic
207tests would be ready before you were there in the survey.
208
209In the conversation I had after with Akum I found out another data flow:
210
211 (used to get a file Megan, but gets from Jordan instead)
212Jordan takes the SQL I gave him -> determines admin information and sends this and shapefiles to Wonder's team and Akum resulting
213data (along with his own team) -> Akum import parts of that dataset and replaces his Universe table with it (IRS_Daily) -> Akum uses
214this in his automation for generating forms, ad hoc queries, etc and he sends Wonder's team an excel export combined with spray data
215from Megan -> Wonder's validation team (Elena, Kubakuba) uses the cumulative spray data from Akum on a irregular interval and they
216validate by import the data into access and compare against the paper forms and if they find errors they edit the access database
217and they keep their own copy of the access database -> Akum gets the access database back from the validation team and he uploads it
218to Dropbox
219
220Akum said that Megan and Dianna asked him to give them a daily list of changes to "update the server". He said he was doing this but
221the data was not changing on the server so he was repeatedly sending the same changes.
222
223Akum has a document outlining the data quality plan called IRS data quality plan v1. Wonder also had another document outlining this
224in a little more detail called IRS data quality plan R22.
225
22610/27/2016
227----------
228
229Last night I returned home and apparently Santiago's efforts to have IPX fix the network in my apartment building paid dividends. I
230immediately connected the failing tablet the the Wi-Fi and everything ran beautifully: CIMS sync, browsing, everything. This suggests
231what I was starting to suspect based on my tests: the office Wi-Fi network has problems. This morning, the Wi-Fi was again down in the
232apartment. This time, I found the admin console of the Wi-Fi router and was able to see what the issues is: the router doesn't have
233a WAN IP. Essentially, devices are able to connect the local Wi-Fi network, but the Wi-Fi network isn't connected to the Internet.
234
235Not sure what could be causing that, I decided to have another chat with Oscar, the resident IPX support person at the BIMCP compound.
236Talking to him always seems to produce useful information. He told me a little bit about how the network is constructed. Essentially,
237there are no wired connections: not between the locations nor to the service provider. This makes sense since cable costs a lot of
238money in material and in labor. Instead of cabling, they use point-to-point microwave radio connections from buildings to the IPX
239base station. Differences in the reliability of these connections between buildings could explain why there are differences in
240reliability.
241
242I arranged to meet with Oscar after hours to run through a test plan. It is:
243
244 x Try syncing with one of the borked tablets with the existing office Wi-Fi configuration (daily traffic)
245 x Change the SSID for a single nearby SSID, connect the tablet to it, try again (# of connected clients)
246 ? Change the SSID back, temporarily disable MAC filtering (access lists) on nearby APs, try again (reconnect and no MAC)
247 x Re-enable MAC filtering, change nearby APs wireless channels so they are not all on channel 1, try again (radio interference/auto-channel swapping)
248 * Disable other BIMCP access points one by one, try again (channel interference, chan. switching)
249 * Leaving only one enabled, change frequency band to be 10MHz and attempt to place center it with minimal overlap (2.412)
250
251
252Try synchronizing at least a few times. One issue we may run into is that the tablet actually completes the sync. Other things we
253might use to test are reinstalling CIMS (this was similarly unreliable) or even just navigating around the Play store (the images
254won't load and/or you get timeouts).
255
256After talking with Oscar I took a trip by to my apartment, since I thought I left my phone there. On the way, I took photos of
257the compound layout from the street so I can give Eric and Dave a sense of how this place is laid out physically. I also wanted to
258show Dave and Eric why there were concerns about random people connecting from the street. Upon return, I will try to snap a photo
259of where the spray team operates out of, since it wasn't visible from the outside wall and it looks like a metal cargo container.
260I wonder how the wi-fi is connected back to the main connection (wired or wireless) and whether the metal container helps to insulate
261or acts as an antenna amplifying the radio traffic around. My guess would be the former.
262
263I started gathering information to inform how we might reconfigure the network. Interestingly enough, the recommended channels from
264wi-fi analyzer are all in the 5GHz range. I started looking for ways to configure these channels on our APs, but they don't appear to
265support anything outside of the 2GHz range. I will have to lookup the model number to see if I can find more information.
266
267I looked up information on the router models and they do not appear to operate in the 5GHz band. One option we would have is to change
268out the access points if we confirm that reducing the number of devices operating on the same band helps.
269
270I logged into Jordan's AP via telnet (using same admin account as web console) and added a channel to the 20MHz list so we can try
271to use channel 14 for testing purposes. It's probably illegal, but given the traffic, it should provide clear skies. The telnet
272interface for the APs is interesting in that it isn't like a linux command line interface, it's validated as separate commands and
273you can use partial commands to change the path you're at. For example, I enter the 'interface wireless channels' and added a channel
274by issuing the following:
275
276[admin@MikroTik] > interface wireless channels
277[admin@MikroTik] /interface wireless channels> add frequency=2484 width=20 band=2ghz-b/g list=20MHz-list
278
279Met with Oscar and we tried syncing the tablet that was failing before starting. It failed.
280
281We tried moving the nearest APs to channel 6 and moving Jordan's to channel 1... same behavior.
282We then tried changing the SSID of Jordan's access point to something other than BIMCP and still no effect.
283We tried disabling ACLs on Jordan's, but the AP never came back from applying the settings.
284It turns out that I may not have remembered to change the tablet to the alternative SSID, so my failing test may have
285been a false positive. Once we fixed the AP, I connected to it on the tablet and was able to install the CIMS software successfully.
286I logged in as a supervisor and started a sync. It seemed to be sluggish, but prior to this is was crawling.
287Oscar mentioned that we can try to use another wireless AP in place of Jordan's. The sync is still running from the last test, so once we
288replace it, it will fail and we won't know whether it would have completed... though, even if it completed, it doesn't definitely say
289that it's an improvment, it could just be unlikely coincidence based on recent performance. We tried it, it didn't seem to work well...
290I noticed that there were a number of updates attempting to run and I killed them. I then tried to install CIMS and it ran fairly fast.
291
292Sadly, I don't think these tests were definitive. I said to Oscar that if we feel like it still could be interference, that we can try
293to test using an access point in the 5GHz band to get away from the traffic. He said he would call the office and see if they have one
294we could use to test.
295
296Another thing I haven't tried is using an alternative network interface to the tablet. If I could somehow get a wired connection, and
297it's fast, then it would lend more support to the hypothesis that it's wireless.
298
29910/28/2016
300----------
301
302First thing, because wi-fi was working in my apartment, I installed and tested some wireless diagnostic tools that I thought might be
303helpful once at the office. Many of them didn't expose the types of information I was hoping for... namely, being able to see retransmits.
304If I want to get that level of detail, I probably will need to use a tool from something like the aircrack suite.
305
306I tried to come up with alternative tests since yesterday's testing in Jordan's area wasn't conclusive. It might be a little tricky,
307but I was thinking that we could try to build a faraday cage and place an access point and tablet inside of it. The problem we have
308is that even if the test succeeds, which would suggest that RF interference or wi-fi traffic in that area is to blame, it doesn't
309tell us which.
310
311When I arrived at the office today, I spoke a bit with Jordan and arranged for him to walk me through what he does other than what he and
312I have collaborated on so I could attempt to put that in context. After having that chat I visited Akum since he called me. We talked a
313bit about what Oscar and I found out last night and we discussed the differences between the MIS usage of the CIMS vs. Jordan's with
314regards to network usage. Essentially, I said that MIS had many clients, but they would only sync down when Jordan's team updates the
315locations. He was operating under the assumption that sending forms for MIS would cause subsequent syncs on MIS tablets.
316
317After this I went down to little corner where Oscar operates out of. There was a little cove where the door to that space exists and there
318I setup with the faulty tablet and my laptop (on top of a lonely little filing cabinet). I wanted to run some sync tests here because the
319number of wi-fi access points looks to be reduced. Using wi-fi analyzer, I found the MAC address of the AP nearby (E4:8D:8C:91:BF:74), for
320some reason, the last byte of the MAC addresses reported from wi-fi analyzer do not match the ones listed in the MikroTik config pages. I
321logged into the correct admin page (192.168.10.11), added the MAC for the tablet (since the tablet wouldn't connect to the AP when attempting -
322it would quickly flash and return to the listed AP status on wi-fi connect page). I was able to connect the tablet after that, and then ran
323the sync. It was acting as Jordan described: it would start syncing, then after a while it would just show a sync failed notification.
324
325I connected to the device and grabbed this stack trace using android studio's android monitor (after the failed sync):
326
32710-28 11:37:07.742 8597-14837/? E/SyncUtils: sync io failure
328 javax.net.ssl.SSLException: Read error: ssl=0xad451400: I/O error during system call, Connection timed out
329 at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
330 at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:728)
331 at com.android.okio.Okio$2.read(Okio.java:116)
332 at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:51)
333 at com.android.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:522)
334 at com.android.okio.RealBufferedSource.exhausted(RealBufferedSource.java:61)
335 at com.android.okio.InflaterSource.refill(InflaterSource.java:96)
336 at com.android.okio.InflaterSource.read(InflaterSource.java:62)
337 at com.android.okio.GzipSource.read(GzipSource.java:75)
338 at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:174)
339 at java.io.InputStream.read(InputStream.java:162)
340 at org.openhds.mobile.utilities.SyncUtils.streamToFile(SyncUtils.java:252)
341 at org.openhds.mobile.utilities.SyncUtils.downloadUpdate(SyncUtils.java:428)
342 at org.openhds.mobile.syncadpt.SyncAdapter.onPerformSync(SyncAdapter.java:26)
343 at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
344
345I tried it again, and it happened it again. However, this time I kept a close eye on the tablet and saw that the tablet actually lost its connection
346to the AP. This was apparent because it showed a connection message "Connected to BICMP". In between it briefly showed the CIMS failure notification
347and then immediately started syncing again.
348
349I tried again, this time keeping an eye on the signal using vistumbler on my laptop. Interestingly, the signal from the access point is fluctuating
350quite a bit. I'm not sure how much this relates to what Jordan is seeing, since I'm not directly next to the access point. However, this seems to
351fail like clockwork.
352
353It seems odd, logging in as supervisor and requesting a sync via the supervisor portal seem sluggish. It's almost as if the network is running
354really slow. Sometimes though, it's immediate. This time the sync abrupted ended the same way as before. I see the "Connected to BIMCP" message.
355
356Though, I heard some phone interference in the place where the cleaning folks are at (the door to the right of where I am situated). Could there
357be other sources of RF interference causing the interruptions? Maybe devices like radios or telephones working on 2.4-5GHz? I heard someone key
358a transmitter and do an announcement (I think he was playing).
359
360Since I am not in an environment like Jordan's (where the AP is nearby), I am going to move closer the access point I'm connected to. The hard
361part is finding it.
362
36310/29/2016
364----------
365
366Last night, I realized that I had missed a possible test case for the wi-fi problems - the APs. This is an alternative reason why things work at
367the apartment yet fail at the office. Before I let my apartment for the office, I checked to see if I had Internet connectivity and then tethered
368the tablet to my laptop using Wi-Fi Direct. I then uninstalled/reinstalled CIMS Tablet and performed a full sync. The whole process worked and it
369seemed as fast as when I test at the office back home. I turned it on and by the time I was done making coffee and eating breakfast, it was done.
370Installed the database and logged in as a field worker.
371
372When I got to the office, I tried the same thing, but not from Jordan's office. I tried it from the meeting room in the main office, since this
373was by far the worst in terms of dropping connections with the tablet. I setup Wi-Fi Direct and connected again, but the connection definitely
374seemed more flaky - my laptop
375
376While monitoring the download using Windows 10 resource monitor, I was surprised when I saw ~2Mbit bandwidth usage and a lot of http connections
377to 13.107.4.50. After Googling a bit, it looks like these were for Windows security updates. When I opened up updates by searching in the start
378menu, I indeed saw that security updates were downloading and were not yet completed. I disabled the Windows Update service (using Services since
379Windows 10 doesn't give users the option) and restarted. Once I did this, it seemed that the unexpected bandwidth usage went away.
380
381I kicked off another sync attempt, but the network traffic wasn't showing in the task manager like it was before. I closed it, and re-opened it
382and there it was again with two wi-fi rates, one for the laptops outgoing wi-fi and one for the hotspot. The rates looked far more similar to what
383I would have expected. Essentially, most/all receieve traffic on laptop wi-fi matches send traffic on the hotspot wi-fi.