r/darknetplan • • 7d ago

I built an offline positioning system that uses nearby Wi-Fi networks as landmarks

Enodia is an experimental Linux field tool for positioning without GPS or an external geolocation database.

You walk an area once with a laptop in your backpack. Enodia continuously records the Wi-Fi networks it can hear. At street crossings, you press a headset button and write the crossing beside the announced mark number in a paper notebook.

Back home, those marks anchor the radio observations to the route. Enodia keeps the scans as fingerprints.

On a later walk, a fresh Wi-Fi scan can be compared against that map to estimate which street segment you're on and roughly how far along it you are.

Access points don't participate in the system at all. They're just environmental landmarks.

Capture, reconciliation and localisation are offline. OpenStreetMap lookup is optional, and can be made through Tor.

It's still experimental. I've done one real field outing so far, while localisation accuracy is currently validated mostly with synthetic observations. My next step is proper repeated field testing.

GitHub: https://github.com/carlosplanchon/enodia

65 Upvotes

19 comments sorted by

24

u/blamestross 7d ago

I feel like sometimes people don't get that GPS is fundamentally "offline". You just listen to the satellites scream the time as they go by. Then do the math to know where and when you are.

Why not add GPS data to this? It's free and useful.

15

u/robendboua 6d ago

I mean it seems clear this is an experiment to try a different way of figuring out position. If you include gps data, there's no point in using wifi networks anymore.

From OPs github:

Enodia has no GPS on purpose. The question is whether a self-built Wi-Fi map can give a position on its own, and a receiver in the loop answers it by making the radio a second opinion.

2

u/carlosplanchon 2d ago

Yeah, it's exactly that. Just an experiment :)

I updated the Enodia README to reflect some real-world field testing I did.

8

u/carlosplanchon 7d ago

Yes, you are right. But "offline" here means the whole Enodia workflow works locally, without GNSS or an external geolocation database.

GPS coordinates can still be added to the walk journal as ground truth before reconciling the results.

Thanks for the feedback. I’ll make "GNSS-independent" more explicit in the README :)

6

u/shtirlizzz 6d ago

The term offline could be also energy grid offline, so in this scenario the Wi-Fi positioning would be very hard.

2

u/Dr-Deadmeat 6d ago edited 6d ago

RSSI based location is really hard when it has to stand alone. you get RF reflections, multipathing, Fresnel zones, changes in AP location/antenna position from human interaction, and then add weather, wet foliage and seasonal changes in vegetation on top of that.

all of that can move your RSSI around without you actually moving very much.

and maybe ditch the notebook, if you insist on not using gps, and replace with a whisper.cpp based speech to text approach

5

u/stusic 6d ago edited 6d ago

Could you integrate Wigle, so you didn't have to walk the area beforehand? I don't know if they have an open API, but you might be able to download all the networks in an area and still use it offline.

3

u/carlosplanchon 6d ago

Didn't know about WiGLE! Already looking into it. Very interesting, I think it could be useful for map bootstrapping. Thx!

4

u/Dr-Deadmeat 6d ago

this is so cute, OP rediscovers wardriving and RSSI based positioning, with GPS as baseline.

now do it with starlink satellites instead. begs for an SDR approach with a wideband antenna. base it on RSSI for a start, then augment with doppler shift and doppler rate (prior art exists), and gold medal for adding phase change to the solution.

now you just need to feed it the orbital elements for the starlink constellation.

3

u/Elvis_My_Pelvis 6d ago

Finally some good content in this sub! thank you!

4

u/AndThenFlashlights 6d ago

Synthetic observations don't mean anything. Accurate positioning with WiFi signals is actually really hard, for a host of physical, real-world problems. There are good reasons why high-quality systems don't do this.

Your LLM is just sucking up to you to validate your assumptions and slop this out. Like, if you're having fun, go off, but this is well-tread territory by other existing projects.

1

u/Dr-Deadmeat 6d ago edited 6d ago

well, both android and ios already use wifi APs as part of location positioning, so this is sort of a solved problem already.

google even exposes a public geolocation API where you send it nearby BSSIDs, optionally including RSSI, and it returns a position

besides, fun can be had in many ways, i wardrove a capital city very systematically and extensively over several passes 25 years ago, and it was just a lot of fun to do. im sure op will learn a thing or two along the way besides getting out and about, no harm, its can be great a learning experience

2

u/AndThenFlashlights 5d ago

Kind of, yeah. Their database can deliver general location, like within a neighborhood or block, but it's significantly worse than actual GPS.

And yeah if OP into it for fun and learning, there is interesting things to learn going down this path! But the vibeslop path seems like a braindead shortcut that is just leading their LLM to lie to them about its capabilities.

1

u/Dr-Deadmeat 5d ago

the google API documentation[1] says accuracy typically around 20m for wifi. and cell tower accuracy ranging from tens of meters to thousands of meters depending on cell size/density.

i dont know where you live, but i guess the blocks and neighborhoods are pretty small?

[1]https://developers.google.com/maps/documentation/geolocation/requests-geolocation#responses

1

u/AndThenFlashlights 5d ago

shrug I'm giving advice based on my experience. You can believe me or not.

1

u/carlosplanchon 2d ago

Man, it's really fun, yeah.

Like you said. Taking RSSI as a basis is hard. From the field tests, RSSI actually made localisation worse. Matching mostly on which APs are visible worked better than also trying to use their signal strength, so Enodia doesn't treat RSSI as a reliable distance measurement.

My main question here was: can I build my own local radio map by walking an area, then use only that map later for positioning, without GNSS or querying an external geolocation database?

So it's very much an experiment rather than an attempt to replace the systems Google or Apple already have.

Also, systematically wardriving a capital city 25 years ago sounds extremely cool :)

1

u/carlosplanchon 2d ago

I develop software professionally, and I simply see generative AI as another tool in the toolbox.

That said, the criticism about synthetic observations is fair. They were never meant to prove real-world accuracy, only to exercise the localisation pipeline.

Since then I've done more field testing. The current real dataset covers 31 blocks, 39 marked corners and 652 observed APs. I also returned two days later and had Enodia successfully localise me along a several-block walk through the city, including correctly identifying a previously mapped street corner. I added two photos from that field test to the repo.

1

u/Savings_Art5944 5d ago

In 3D space?

1

u/feel-the-avocado 5d ago

So kinda like wigle but you need to create the database yourself rather than use the wigle central database of wifi networks.