Anish’s Status Report for 04/29

This week we did our final presentation – we all helped Ethan prepare the slide presentation for that. Other than that, I have been working on refinements to the user-interface so that we can easily show people how our system works during the final demo (by visualizing the internals of the sensing and algorithm). The other thing I have been working on is implementing a few of the remaining unit-tests that we still need to run to validate our system against our design requirements.

I feel like we are on schedule; in the next week we will work on the poster, final report, and finish up running the unit-tests (device detection, as well as the integration-test for accuracy).

Anish Status Report 04/22

These past two weeks were extremely productive – I finalized our hardware stack into a small, battery-powered unit (see the pictures in our “Team Status Report 04/22”) that attaches to the back of the user’s phone. The processing stack runs on a laptop, which can be anywhere in the vicinity (the user doesn’t have to carry it around the room when doing the scan); and the laptop connects wirelessly to the rest of the electronics using a 900MHz (ISM band) radio. I refined the firmware for the ESP32 to use this wireless link to talk to a driver (implemented in Python) on the laptop, as well as programming the ESP8266 to send out the pinging packets (hence completing the time-of-flight loop).

I feel like we are very much on schedule as our integration-testing all works – we can walk around a room with the sensor for ~4 minutes, and see in the AR view that the Wi-Fi devices are located to within the 1m accuracy. There are a few points left to be refined during the next week, including nicer visualization (both on the laptop and in the AR space) and making the device detection run fully asynchronously and feed into the rest of the stack, and after that it’s just working on our report and unit-tests.

Anish’s Status Update 04/08

This week I made substantial progress on the system integration. I ported the pinging-initiator code to run on an ESP8266, and added an interface to configure and pull data from the ESP32+ESP8266 combo, over the UART, in real-time (the need for two microcontrollers comes from the inability to precisely timestamp outgoing packets, so we must send packets from one microcontroller and timestamp both the request and the response on the other). I’ve tested this against the rest of the system (by generating CSV files and piping them into the MATLAB pipeline) and it works quite well in terms of efficiency and reliability.

My next step is to finish integrating it with the rest of the stack by completing the wireless interface (which means the computer running the system doesn’t need to be carried around with the user while they are doing their scan) and writing the Python interface to allow integrating it with the device-detection and localization code. I’m a little worried about wireless reliability with the XBee radio I’m currently using, but there should be a way to make it work with a proper handshaking interface. As such, I feel like we are pretty on-schedule although will need to do substantial testing and debugging-integration in the next two weeks to get everything working.

The testing we need to do once everything is working is to walk around in a room and collect data; and then take various subsets of this data (to test for different timescales and movement patterns) and determine the accuracy of locating the different devices. This, combined with some unit-testing of the self-localization and visualization accuracy, should allow us to quantifiably verify our use-case requirements and metrics.

 

 

Anish Status Report for 04/01

Over the past week I worked on fixing some bugs in the ESP32 code and using it to start collecting data traces to test our algorithms with. It works better than expected; after filtering outliers and doing smoothing, the results are pretty consistent with what they should look like (at least over a several-meter range). We’re still trying to get it working on short ranges as well. There are no major roadblocks that I see blocking us going forward. I also started taking data measurements with the Yagi directional antenna to see if that data can be useful to our final algorithm or if the ToF data is sufficient.

In the next week I’m hoping to work on the end-user interface and figure out how we’ll actually stream the results out of our algorithm and display it to the user.

Anish’s Status Report 3/25

This week I was attempting to figure out how to get PicoScenes to detect the NULL/ACK packets from our pinging attack in order to use it for measuring the time-of-flight to maximum possible accuracy. I was not able to make much progress on this because I kept running into some other issues with PicoScenes where it would crash randomly and sometimes crash my other network interfaces with it (I was initially using a wired connection to SSH into the machine with PicoScenes); I’m still trying to fix this (possibly related to other configuration on the computer; restarting seems to help but the problem does sometimes come back).

I did clean up the ESP32 code a little bit, which, while not the best (very noisy data), is an option to at least start testing full system integration. It’s still unclear whether there’s a more effective way to handle dealing with multipath on the results from the ESP32.

I am slightly behind schedule which I hope to rectify in the next week by spending more time debugging and make a final decision on whether PicoScenes will work, or if we need to rely fully on Scapy + ESP32 for everything. There is also the open question of whether the directional antenna will buy us any more useful data. Next steps after that is to start prototyping the user-interface where we will actually show the results to the user.

 

Anish’s Status Report for 03/18

I reached out to the PicoScenes developers and was able to get a donated PicoScenes license (which avoids us having to deal with the issues of the ESP32). The high-precision clock sampling seemsĀ  to work and I’m able to read the relevant packet metadata from Python; however it is limited to 40mhz clock speed (because we are on 2.4ghz which has limited width bands). It also does not detect our ping packets for some reason (possibly due to them being malformed packets).

Next week I’ll be working on figuring out how to work around these two issues (the packet issue would likely be by formatting the packets to have additional fields so PicoScenes parses them correctly, but I’m still unsure how to deal with the 40mhz limitation); that should bring us to a point where we can collect data to test our algorithms against.

Anish’s Status Report for 03/11

A significant chunk of time in the past week went into writing up the design review report and documenting our plans for the project. Because of limitations on timestamp capturing in PicoScenes that I don’t think we’ll be able to work around, I started looking into how we can use an ESP32 microcontroller to get similarly-precise timestamps, like is done in the Wi-Peep paper. I wrote some code to run the ESP32 in monitor-mode and take timestamps when the interrupt is received. I took some test measurements and noted it was significantly noisier than the Wi-Peep paper’s results; it also seems to vary quite a bit with changes to the optimization and driver settings for the ESP. Next week I will be looking further into if there are any more build-time settings that can be changed or other ways to improve the measurement quality.

Anish’s Status Report for 2/25

I had a lower time availability this week due to other project deadlines and midterm exams but I still made some progress. I gave the design review presentation on Wednesday and looked closely into the feedback from that (as well as the proposal presentation) that was provided to us later in the week. I took some measurement traces with the directional antenna to validate that it does indeed roughly match the expected radiation pattern (noting that it does not actually work directionally on 5GHz; only on 2.4, as expected). I also investigated how to capture precise timestamps from the WiFi card – we found that the PicoScenes library has some restrictions on timestamp capturing which we may need to work around to do ToF-quality measurements.

Although doing tasks slightly out-of-order, I feel generally on-track in terms of progress relative to the schedule. Next week I hope to figure out how to capture timestamps accurately and with low jitter, as well as start prototyping the AR self-localization aspect so that we can use it to take realistic data traces once the Polite WiFi implementation is complete.

Anish’s Status Report for 2/18

This week I worked on trying to implement the “Polite WiFi” attack where we are able to ping devices with 802.11 null packets and get an acknowledgement packet in response (from which we can measure time-of-flight and signal strength). I’m still having some trouble with this; it seems that the library I’m using to send packets (Scapy) is not playing well with my wifi card, and I was constantly getting mangled MAC addresses when sending a null packet between devices. I am continuing to work to debug this. I also set up a hardware test platform with multiple antennas connected to an AX200 wifi card, and tested that I could successfully take measurements across the antennas with Wireshark.

As of now we are on-schedule and making solid progress, and I don’t feel that we need to make any corrections to the project schedule.

In the next week, I hope to figure out the issue with the wifi pinging and be able to measure ToF to different devices; and then start collecting real data using our antenna setup which we can start analyzing with the filtering algorithms.

The engineering principles I’ve been using heavily up til now includes electromagnetism/antennas (which I learned in Physics 2 and 18-220) as well as networks and wireless protocols (which I learned about in 18-213, 18-349, and 18-649).

Images attached of setting up the AX200 card with external antenna connectors, as well as a multi-antenna setup that I’ve been experimenting with using for measurements.

 

Anish’s Status Report for 2/11

Most of this past week was spent on literature-review and background – including the proposal slides and working to refine our project plan afterwards. I looked into different hardware options we could use with PicoScenes (particularly the differences between the several Intel WiFi cards) as well as antenna hardware options, and ordered the relevant WiFi card and connectors (as to not have to cannibalize Ethan’s laptop for the final prototype). I also started experimenting with Wireshark and looking at what relevant metadata we can extract about devices. I feel confident in progress so far and being on-track with our schedule. Next week I will continue working with PicoScenes and (once the new WiFi card arrives) testing with varied physical antenna configurations to get some results which Thomas can use to test the processing algorithms against.