Build a node
Build a node, step by step
Flash one microSD card, plug the parts together, put the node outside and turn it on. A phone is the only other tool you need for setup. Allow an afternoon for assembly, then one clear night for the node to calibrate itself.
New and not yet hardware-tested. The system image, its setup page and the automatic star calibration are new. They are built and tested automatically and in containers, but have not yet been booted on a real Orin Nano with a camera and GPS. The camera connector setup, PPS on pin 7 and the Wi-Fi hotspot in particular need a real device. Expect some troubleshooting, and please report what you find.
Register before you buy. A node is only useful with a partner 5–40 miles away, and you need a claim code from the network coordinator to finish setup. Register your interest and check the coverage map first.
Parts checklist
Prices, sources and alternatives are in the parts list. Examples are illustrations, not endorsements; equivalent parts work.
Step 1: Get the parts
You need
- The checklist above and the parts list with prices
- Register your interest and wait for the coordinator to confirm that your location fits the network.
- Buy the parts. Typical total: roughly $700–1,000 including the recommended ADS-B receiver.
- Check the GPS module's product page for two things: that it has a PPS output pin, and which supply voltage its VIN pin accepts (3.3 V, 5 V or both). You need both in step 6.
Check
Everything on the required list is on your table, plus the claim code (it can arrive later, before step 14).
Common mistakes
- A USB GPS dongle without a PPS wire. It works, but timing falls back to internet time.
- A SATA M.2 SSD. The developer kit's M.2 Key M slots need a PCIe NVMe drive.
- A Raspberry Pi camera cable with a 15-pin end. The developer kit's camera connectors are 22-pin.
Step 2: Check the firmware, once
You need
- A DisplayPort monitor (or a DisplayPort adapter) and a USB keyboard
- Only if an update is needed: a spare microSD card, an internet connection for the Jetson, about an hour
Developer kits that left the factory with older (JetPack 5) firmware cannot start a JetPack 6 system such as the UAP Finder image until their firmware has been updated once. Kits that already have firmware version 36 or later skip this step.
- Connect the monitor and keyboard to the developer kit. No microSD card is needed.
- Plug in the power supply and press Esc repeatedly while the NVIDIA logo shows. The UEFI setup screen opens.
- Read the firmware version near the top of the screen, under the board name. 36. followed by anything (for example 36.4.3) means you are done: go to step 3. A lower number (for example 35.x, 5.0 or 3.0) means you need the update. (A kit already on 36.x is brought to the card's exact firmware version automatically on its first boot, with one extra restart.)
- To update, follow NVIDIA's Jetson Orin Nano Developer Kit getting-started guide exactly. In outline: write NVIDIA's JetPack 5.1.3 SD-card image to a spare card with balenaEtcher, boot it and finish Ubuntu's first-run setup; the firmware updates during the next reboot. Then install NVIDIA's QSPI updater and reboot again:
sudo apt-get update
sudo apt-get install nvidia-l4t-jetson-orin-nano-qspi-updater
sudo reboot The package name and order come from NVIDIA's guide; if the guide says something different, follow the guide. The process takes several reboots. Never remove power while an update is running.
Check
The UEFI screen (press Esc at start-up) shows a firmware version starting with 36.
No monitor? You can skip ahead and try the UAP Finder card. If neither the setup page nor the hotspot appears within about 10 minutes of first power-on (step 13), old firmware is the most likely cause.
Common mistakes
- Unplugging during a firmware update.
- Rebooting too soon: users report the first update can take 15–20 minutes to download and prepare.
- Assuming a new kit has new firmware. Check; it takes a minute.
Step 3: Flash the UAP Finder image
You need
- A computer with a microSD card reader
- A microSD card, 64 GB or larger, A2 rated
- balenaEtcher (free, macOS, Windows, Linux)
-
Open the latest release and download
uapfinder-node-<version>-orin-nano.img.xzand its SHA-256 checksum file. The image is under 2 GB. - Optional but wise: check the download against the published checksum. The two strings must match.
# macOS
shasum -a 256 uapfinder-node-0.2.0-orin-nano.img.xz
# Linux
sha256sum uapfinder-node-0.2.0-orin-nano.img.xz
# Windows (PowerShell)
Get-FileHash uapfinder-node-0.2.0-orin-nano.img.xz -Algorithm SHA256 - Insert the microSD card and start balenaEtcher.
- Flash from file: choose the
.img.xzfile. No need to unpack it. - Select target: choose the microSD card. Check the size so you do not overwrite another disk.
- Flash! Etcher writes the card, then reads it back to verify it.
- Eject the card when Etcher says it is done.
Check
Etcher finishes and reports success, with no validation error.
Common mistakes
- Clicking "Format" when your computer says it cannot read the card afterwards. That is normal for a Linux card: choose Ignore or Cancel.
- Writing the image with a file copy instead of Etcher.
- A slow or counterfeit card. Use a name-brand A2 card of 64 GB or more.
Step 4: Install the NVMe SSD Recommended
You need
- NVMe M.2 SSD (PCIe), 2280 or 2230 size
- Small Phillips screwdriver
- Unplug the power. Touch something metal to discharge static before handling the boards.
- Turn the developer kit over. The M.2 Key M slots are on the underside of the carrier board: a long one for 2280 (80 mm) drives and a short one for 2230 drives.
- Remove the small retaining screw opposite the slot you will use.
- Slide the SSD's gold contacts into the slot at an angle of about 30°, with the notch lined up with the key in the slot.
- Press the far end down flat and refit the screw. Snug, not tight.
The node formats the drive automatically on first boot and keeps clips and calibration on it, but only if the drive is blank (no partition table). It never erases a drive that has partitions, so use a new or wiped drive.
Check
The SSD lies flat and is held by the screw. After first boot the setup page lists it under Storage.
Common mistakes
- A SATA M.2 drive: it fits the slot but will not work.
- A drive with old partitions: it will not be formatted or used for clips until it is wiped.
- Losing the tiny screw. Work over a tray.
Step 5: Connect the camera to CAM0 and fit the lens
You need
- IMX477 camera and its 22-pin cable
- Lens and CS adapter
- A clean, dry hands-off attitude to the sensor
- Unplug the power. Find the two camera connectors on the carrier board, labelled CAM0 and CAM1. Use CAM0: the image sets up the camera on that connector only.
- Gently lift the connector's latch. It hinges up; it does not come off.
- Slide the 22-pin end of the ribbon in straight and all the way, with its metal contacts facing down, toward the board.
- Press the latch back down to clamp the ribbon. Connect the other end to the camera as its maker describes.
- Screw the CS adapter onto the camera, then the lens into the adapter. Remove all dust caps.
- Focus at infinity: point the camera at something far away (a distant tree line or mast, or a bright star or planet at night) and turn the lens until it is sharpest, then lock it with its ring or set screw. You can fine-tune later with the live preview on the setup page.
A USB (UVC) camera also works in any USB 3 port and is found automatically, but the recommended CSI camera is what the software is tuned for.
Check
The ribbon is straight and square in the connector and the latch is closed. After first boot the setup page shows the camera as found and the preview shows the sky.
Common mistakes
- Using CAM1. The image only enables CAM0.
- The ribbon upside down or not fully inserted: the most common reason a camera is not detected.
- Plugging or unplugging the ribbon with power on.
- Touching the sensor, or focusing on something close, like the room.
Step 6: Wire the GPS to the 40-pin header
You need
- GPS module with PPS and its antenna
- 5 female-to-female jumper wires
- Multimeter (recommended)
- Find pin 1 of the 40-pin header: it is marked on the board (look for a "1", a triangle or a square solder pad). Odd pins (1, 3, 5 …) run along one row and even pins (2, 4, 6 …) along the other, so pin 2 is next to pin 1.
- Confirm with a multimeter, with the board powered and nothing connected to the header: pin 1 to pin 6 reads about 3.3 V and pin 2 to pin 6 about 5 V. Take care not to bridge two pins with the probe. Then unplug the power.
- Power: connect the module's VIN to pin 2 (5 V) if the module accepts 5 V, or to pin 1 (3.3 V) if it needs 3.3 V. Connect GND to pin 6.
- Serial: module TX to pin 10 (UART1 RX), module RX to pin 8 (UART1 TX).
- Time: module PPS to pin 7.
- Connect the antenna (push u.FL connectors straight on; they are fragile) and place it where it sees the sky: under a plastic lid is fine, under metal is not.
The header's signal pins work at 3.3 V. The module's TX and PPS outputs must be 3.3 V logic; most GPS breakouts are, but check yours. A USB GPS also works in any USB port, without PPS, using network time instead.
Check
Five wires, each on the pin in the table. After first boot the setup page shows a GPS fix with the number of satellites, and PPS: locked. The first fix outdoors can take several minutes. On the Adafruit Ultimate GPS, the FIX light blinks about once a second while searching and about once every 15 seconds once it has a fix.
Common mistakes
- TX to TX and RX to RX. They cross: TX goes to RX.
- Counting pins from the wrong end or the wrong row. Start from the marked pin 1.
- 5 V into a 3.3 V-only module.
- PPS on any pin other than 7. The image only listens on pin 7.
| Pin | Header signal | Connect to | Notes |
|---|---|---|---|
| 1 | 3.3 V | GPS VIN (3.3 V modules only); BNO055 VIN | Use pin 1 or pin 2 for the GPS, never both. |
| 2 | 5 V | GPS VIN (modules that take 5 V) | Check your module's VIN range on its product page. |
| 3 | I2C SDA | BNO055 SDA | Optional orientation sensor. |
| 5 | I2C SCL | BNO055 SCL | Optional orientation sensor. |
| 6 | GND | GPS GND | |
| 7 | GPIO (PAC.06) | GPS PPS | The image turns this pin into the pulse-per-second input. |
| 8 | UART1 TX | GPS RX | The Jetson talks, the GPS listens. |
| 9 | GND | BNO055 GND | Optional orientation sensor. |
| 10 | UART1 RX | GPS TX | The GPS talks, the Jetson listens. |
Step 7: Add the orientation sensor Optional
You need
- Adafruit BNO055 breakout (or equivalent)
- 4 female-to-female jumper wires
- Unplug the power.
- Connect VIN to pin 1 (3.3 V), GND to pin 9, SDA to pin 3 and SCL to pin 5.
- Fix the sensor rigidly to the camera bracket so it moves with the camera, not with the box.
The node finds the sensor by itself (address 0x28 or 0x29). It gives the star calibration a starting guess and notices if the mount moves; it is not precise enough (about 1°) to measure pointing.
If your GPS also runs from pin 1 (3.3 V), both modules need that pin: use a splitter jumper, or power a GPS that accepts 5 V from pin 2 instead.
Check
After first boot the setup page lists the orientation sensor as found.
Common mistakes
- Mounting it on the enclosure instead of the camera bracket.
- Powering it from 5 V.
Step 8: Add the ADS-B receiver Recommended
You need
- RTL-SDR-type USB receiver (e.g. RTL-SDR Blog V4L)
- 1090 MHz antenna and coax
- Plug the receiver into one of the developer kit's USB ports.
- Mount the antenna outside the enclosure, upright with a clear view, and run the coax in through a cable gland.
The image detects RTL-SDR-type receivers and runs a decoder (readsb) automatically, so the node can recognise aircraft from their own position broadcasts without relying on an internet feed.
Check
After first boot the setup page shows the ADS-B receiver as the ADS-B source.
Common mistakes
- Leaving the antenna inside a metal box, or low behind a wall.
Step 9: Insert the microSD card
You need
- The card you flashed in step 3
- Unplug the power.
- Find the microSD slot on the underside of the Jetson module, the smaller board with the heatsink and fan, at its edge.
- Slide the card in gently until it is fully seated. It only fits one way; if it does not slide in easily, turn it over rather than pushing harder.
Check
The card sits fully in the slot and does not move when touched lightly.
Common mistakes
- Forcing the card in the wrong way round.
- Looking for a slot on the carrier board: there is none; it is on the module.
Tip: test on the bench first. Before sealing anything into the enclosure, you can do steps 12–14 on a table, with the GPS antenna by a window, to see the camera, GPS and storage all found. Then shut down from the setup page, unplug and carry on.
Step 10: Enclosure, dome, heater and mounting
You need
- Weatherproof enclosure and clear acrylic dome
- Cable glands sized for your cables, a breather vent
- Mounting plate, standoffs and a rigid camera bracket
- Dew heater ring (recommended), sun shade
- Outdoor-rated power with GFCI/RCD protection
- Mount the developer kit on a plate with standoffs, leaving room for air around its fan and heatsink.
- Cut the opening for the dome, seal the dome in with outdoor sealant, and fix the camera on a rigid bracket so the lens sits close to the dome's centre.
- Fit the dew heater ring around the dome's base. Power it from its own supply as its maker describes, not from the 40-pin header. Nothing in the node software controls it.
- Put the cable glands in the bottom of the box, facing down, with a drip loop in every cable outside so water drips off before it reaches the gland.
- Add a breather vent, shade the box from direct sun (keeping the dome's view open), and cover any bright status lights inside the dome with tape so they do not reflect into the lens.
- Electrical safety: run only the low-voltage DC cable into the box and keep the power supply indoors or in its own weatherproof box, on an outlet protected by a GFCI/RCD. Any mains wiring outdoors should follow local rules; if in doubt, ask a qualified electrician.
- Fix the box to a stiff pole or bracket. It must not sway in the wind or sag over time: the calibration assumes the camera stays put.
Check
Push the box firmly: it does not move. The dome is clean, glands are tight, and nothing inside rattles.
Common mistakes
- No heater: the dome fogs or frosts on clear nights, exactly when calibration needs it.
- A sealed box in full sun: the computer overheats and slows down.
- Cables entering from the top or sides, letting water run in.
- A flexible mount: every wobble is a pointing error.
Step 11: Place and aim it
You need
- A spot with open sky and, if possible, no direct streetlight glare
- Choose the spot with the most open sky above about 10–15° elevation, away from bright lights.
- Aim the camera's centre between 45° and straight up.
- Turn it roughly towards the area to cover, for example the sky between you and the neighbouring nodes the coordinator mentions. A rough heading is enough.
You do not need to measure anything. On the first clear night the node works out exactly where it points from the stars. After that, avoid moving it; if it does move, its directions are off until it recalibrates (it recalibrates when its last calibration is more than 7 days old).
Check
From the camera's position you can see mostly sky in the direction it points, with no roof edge, tree or light in the middle of the view. The live preview in step 14 confirms it.
Common mistakes
- Pointing low towards the horizon: more haze, refraction and buildings, and more of the neighbours in view.
- Aiming at a streetlight or security light.
Step 12: Connect to the network
You need
- Ethernet cable to your router (recommended), or your Wi-Fi name and password
- Ethernet (recommended): plug an outdoor-rated cable from the node to your router or a switch.
- Wi-Fi: leave Ethernet unplugged. If the node has no network 90 seconds after it starts, it
opens its own Wi-Fi network called
UAPFinder-XXXX(passworduapfinder), where you pick your home Wi-Fi on the setup page in step 14. The hotspot closes once the node is on your network.
The node only connects outwards to the server. You do not need a static address or any router port forwarding.
Check
With Ethernet, the router's port light comes on once the node is powered (step 13).
Common mistakes
- Plugging the node into a guest network that keeps devices apart: your phone then cannot reach its setup page.
Step 13: Power on and wait for the first boot
You need
- The 19 V power supply from the kit
- Plug the supply into the developer kit's round DC power jack (not the USB-C port), then into the outlet.
-
Wait a few minutes. On its first start the node expands the system to fill the card, names
itself
uapfinder-XXXX(XXXX is four characters unique to your board), creates its own keys, formats a blank NVMe drive and sets up the camera and PPS connections. It restarts by itself once to apply them, and once more if it brings 36.x firmware up to the version on the card. Do not unplug it during this time.
Check
After a few minutes, either the setup page answers at http://uapfinder.local or the UAPFinder-XXXX Wi-Fi network appears.
Common mistakes
- Pulling the power during first boot, or mistaking its automatic restart for a fault.
- Using a different power supply than the one in the kit.
- Giving up too early: give it at least five minutes before troubleshooting.
Step 14: Open the setup page and claim the node
You need
- A phone or laptop
- Your claim code
-
On a phone or laptop on the same network, open
http://uapfinder.local(orhttp://uapfinder-XXXX.local). Using the hotspot instead? JoinUAPFinder-XXXXwith passworduapfinderand openhttp://10.42.0.1. - If you are on the hotspot, choose your home Wi-Fi and enter its password first.
-
Enter the claim code from the coordinator, like
7KQ2-M9XD. Case does not matter and the dash is optional. Codes never contain the letters I, L, O or U, so a round character is a zero. - Set a device password and keep it somewhere safe. Every change to the node needs it from now on.
-
Check the status list:
- Camera found, and the live preview shows sharp, open sky. Use the horizon and elevation overlay to adjust the aim.
- GPS fix with satellites, and PPS locked.
- Time error with no warning (it warns above 2 ms; allow a few minutes after start-up to settle).
- Storage, and the orientation sensor and ADS-B receiver if you fitted them.
- Server connected.
Check
The claim succeeds and every item you fitted is listed as found. "Pointing: waiting for a clear night" is expected at this stage.
Common mistakes
- A code that was already used or has expired: each code works once. Ask the coordinator for a new one.
- Choosing a weak device password. Anyone on your network can reach the page.
UAP Finder node uapfinder-7c3e
- Network Connected (Ethernet)
- Claim code 7KQ2-M9XD From your network coordinator
- Device password ••••••••••••
UAP Finder node uapfinder-7c3e
- CameraIMX477 found
- GPS3D fix · 11 sats
- PPSlocked
- Time error0.004 ms
- Orientationnot fitted
- ADS-Breceiver found
- StorageNVMe 512 GB
- Serverconnected
- Pointingwaiting for a clear night
- Software0.2.0
Step 15: Wait for the first clear night
You need
- Patience, and a clean, dry dome
There is nothing to do. The node calibrates itself:
- Every 30 minutes, once the Sun is more than 12° below the horizon and the node has a GPS fix, it tries to match the stars it sees with its star catalogue.
- On success it saves its exact pointing and lens model and starts reporting with full precision. Clouds just mean it tries again later.
- It repeats the calibration about once a week.
Until the first calibration the node reports with a large uncertainty, which the server handles safely. The automatic calibration is new and has not yet been tested on real hardware under a real sky.
Check
After a clear night the setup page's pointing line no longer says "waiting for a clear night".
Common mistakes
- A fogged, frosted or dirty dome, or a lens cap left on.
- Moving the node after it has calibrated.
Step 16: Confirm it on the live map
- Open the live map and find your node. Publicly, its position is rounded to about 1 km.
- It shows as online while the server hears from it; the node sends a heartbeat every 10 seconds.
- Let the coordinator know it is running. That's it.
Check
Your node is on the map and online.
Troubleshooting
The setup page's Diagnostics button downloads a bundle you can attach to an issue report. Always shut down from the setup page before unplugging.
No setup page found
- Give the first boot at least five minutes.
- Try
http://uapfinder-XXXX.local. Some phones and computers do not resolve.localnames: look in your router's list of devices foruapfinder-XXXXand openhttp://followed by its address. - Make sure your phone is on the same network, not a guest or mobile network.
- No Ethernet? Look for the
UAPFinder-XXXXhotspot instead. - If after 10 minutes there is neither a page nor a hotspot, the firmware is probably too old (step 2), or the card was not written correctly: flash it again (step 3).
The hotspot does not appear
- It only starts when the node has no network 90 seconds after start-up. With Ethernet connected, use
http://uapfinder.localinstead. - It closes as soon as the node joins a network.
- Your phone may leave a network without internet: tell it to stay connected, or turn off mobile data while you set up.
- Move closer: the enclosure weakens Wi-Fi.
No GPS fix
- Give it several minutes outdoors with a clear view of the sky; a first fix takes longest.
- Check the antenna is connected and not under metal.
- Check TX and RX are crossed (module TX to pin 10, module RX to pin 8) and the module has power (pin 1 or 2, GND on pin 6).
GPS fix, but no PPS
- PPS must go to pin 7, and the module must have a fix: many modules only pulse once they do.
- Check the module's PPS output is 3.3 V logic and the jumper is firmly on.
- A USB GPS has no PPS: the node then uses network time, which is less precise.
Camera not found
- Power off, then reseat the ribbon in CAM0: straight, all the way in, contacts facing the board, latch closed.
- Check both ends of the ribbon and that it is the camera kit's 22-pin cable.
- The image is set up for the IMX477 camera on CAM0. Other CSI cameras may need changes; a USB camera is found automatically.
Time error warning
- Allow several minutes after start-up for the clock to settle.
- Check that PPS shows as locked; without PPS the error is usually a few milliseconds, above the 2 ms warning level.
Pointing still "waiting for a clear night"
- It needs real darkness (Sun 12° below the horizon), a clear sky and a GPS fix.
- Check the dome for dew, frost or dirt, the lens cap, and focus (stars should be sharp points in the preview).
- A bright Moon, haze or heavy light pollution can make it take longer. It keeps trying every 30 minutes.
The board does not start at all
- Use the kit's 19 V supply in the round DC jack.
- With a monitor connected, check whether anything appears; a black screen or a UEFI shell points to old firmware (step 2).
Alternative: install from the command line
Already running NVIDIA JetPack 6 on your Jetson and prefer a terminal? The command-line installer produces the same system as the image: the same services, setup page and automatic calibration. Then continue from step 14.
sudo apt-get update && sudo apt-get install -y git
git clone https://github.com/coalsi/uapfinder.git
cd uapfinder
sudo ./edge/deploy/jetson/setup.sh
Options, configuration and checks are in the edge README. The script is
edge/deploy/jetson/setup.sh.