Set up a Raspberry Pi drone receiver
Install Layer400, connect your receiver and check that it is contributing drone Remote ID or aircraft reports.


01Ethernet for internet
02USB for your radios
Before you start
Start on a desk, with a reliable power supply and internet connection. You do not need a roof installation to begin. Check the current release requirements and hardware guide before buying equipment.
Layer400 installs onto Linux; it is not an SD-card image. Keep an existing aircraft feeder and its operating system in place. A missing optional radio does not stop you connecting your receiver to your account.
Prepare the Pi
Connect power and internet, then attach your capture radios. Keep the adapter providing internet separate from Wi-Fi capture. With several USB radios, check the total power requirement and consider a suitable powered hub.
Which radio does what?
- RID Wi-Fi: receives supported drone Remote ID broadcasts with an installed driver that supports monitor mode and permitted channels.
- Bluetooth LE: receives supported BLE Remote ID broadcasts. The device must expose a Bluetooth controller to Linux. A programmable Nordic board running serial, sniffer or HID firmware is not automatically a Bluetooth USB adapter.
- ADS-B: receives aircraft data through a supported RTL-SDR or an existing decoder’s JSON or Beast feed. Other SDR families need a compatible external decoder.
A brand name or “monitor mode” on a listing does not guarantee compatibility. Check the chipset, firmware and installed driver.
Run the installer
In the Pi’s terminal, run:
curl -fsSL https://layer400.com/install | sudo bashLeave it open while the stages finish. Package downloads and installation can take several minutes. If it fails, keep the last error and installation log rather than repeatedly starting again.
The completion box gives you a local HTTPS address. Open the exact address, including any port number, on the same network. If the .local name does not resolve, use the printed IP address. A device-local certificate may show a browser warning; check that the address belongs to your Pi before continuing.
No desktop on the Pi?
Raspberry Pi OS Lite has no desktop browser. Use SSH from your laptop to run the command, then open the Pi’s local website in your laptop browser. The setup file stays on your laptop until you upload it through that page. You do not need to copy that file using SSH.
Manual downloads and installation instructions are available if you prefer an archive. Signature and compatibility checks still apply.
Create the setup file
- On the Pi’s welcome page, choose Continue on Layer400. Installation is already done; you will continue with your account and location.
- Sign in, or follow the verification link sent to your email, then choose your password.
- Place the pin at your antenna. Use the ground-height lookup if helpful, then enter its mounting height in the units shown. Ground elevation and height above ground are different.
- Download your
.layer400pisetup file.
Keep that file private. It connects this receiver to your account and location.
Connect the receiver
Return to the Pi’s local page and upload the setup file. Let connection finish, then open the dashboard. You do not need to complete an ADS-B form or choose a password before connecting. You can configure optional features afterwards.
Do not create a second station because a radio is quiet. If the file has expired, download a fresh one for the intended station from your account.
Check the result
On Overview, check the connection, reception status and last accepted observation. The lifetime accepted count is separate from retained History. A connected receiver may have nothing in range right now.
On the website, choose Check my receiver. Once it confirms the connection, you can return to the Pi to fine-tune the installation.
Devices and reception
Connected hardware tells you what is plugged in and whether its capabilities are suitable. Radio health tells you what it is doing now. Check devices requests a fresh inventory; it does not reset the radio.
Names, bands and multiple antennas
Use the pencil to name a device or its antenna. The name follows a verified device identity, not a USB socket. Devices without a unique identity cannot safely keep a portable label.
One Wi-Fi adapter can receive several drones on one channel. Extra adapters can cover more channels or provide another antenna view. They may share a channel when useful. Band settings cannot create channels or driver capabilities the hardware does not support.
What do the numbers mean?
RF frames include other Wi-Fi traffic. RID frames are compatible Remote ID messages; neither is a count of unique drones. BLE advertisements are not automatically drones. Channel switch time measures the tuning command through driver confirmation, not time spent listening or signal strength.
“Starting” is not “Ready”. A failed worker or stale report should remain visible even if the adapter passed its capability check.
A device disappears when I move it
A brief disconnected state is expected. Give Linux time to enumerate it, then check for a driver, power or capture error. Troubleshooting → USB placement compares positions using passive reception. Use the same antenna and similar conditions; no traffic or a moving transmitter cannot establish a winning port.
A short USB extension or USB 2 port may help some 2.4 GHz setups. It is a test worth trying, not a rule that USB 2 is always better.
Aircraft sources
Leave Automatic local source on to discover a usable local feed. Layer400 checks existing decoder output before claiming a supported free USB radio. It does not stop another feeder or take over a device whose ownership is uncertain.
Layer400 can add multiple eligible radios, up to eight configured sources. A detected device, a saved source and a source receiving aircraft are separate states. “Waiting for automatic setup” does not mean capture is running yet.
Add or edit a network feed
- Choose Add source, then Network JSON or Beast TCP.
- Enter the local decoder address and use Test connection.
- Save the source. Check its aircraft count, decoded-update rate, age and errors.
Each source’s Edit button opens its own settings. Cancel closes it without saving. Feeds must describe antennas at this station; use another Layer400 station for a receiver at another site. Do not forward router ports.
Another feeder already uses my SDR
Share its healthy local JSON or Beast output. If that output is missing, fix the existing decoder or configure its endpoint. Layer400 will not stop it just because a radio appears idle. When Layer400 owns the primary decoder, other feeders can consume its local Beast endpoint if available; keep them in network mode rather than competing for USB.
Make it yours
Settings groups receiver identity, business details, antenna location and web access into expandable sections. Save each change before leaving.
- Friendly name and location: identify this box in the local header without changing the station identity.
- Business, asset reference and notes: optional installation details. Do not put passwords in notes.
- Installed: the first recorded installation date. Updates do not reset it. Older installations without reliable evidence show an unknown date.
Find the local address after DHCP changes
Run sudo layer400 setup on the Pi for its current address. With local-address reporting enabled, your current dashboard addresses also appear in your Layer400 account and to authorised administrators. Look in the receiver’s details; the report includes when it was last seen.
Open requires your browser to be on the receiver’s network. It is not remote access through Layer400. Stale addresses are labelled; the cloud does not scan or fetch your LAN.
See what this receiver is hearing
Open Live radar in the Pi’s dashboard for a map of its local reports. This is your receiver’s view, rather than every aircraft on the worldwide map.
- Map settings lets you show range rings and trails, or follow the receiver when using GPS.
- Traffic & sources shows the reports and the sources behind them. Select a track to check its age and details.
- Street map switches the background. If street tiles are unavailable, the offline grid still provides a view of received positions.
An empty map can simply mean there are no recent positioned reports. Check source status before assuming that a radio has failed. Two sources can report the same aircraft; the details identify the source.
Take your receiver mobile
Available in receiver 0.1.0-71. Start with a stationary test at home: a working GPS fix is one check, and a working phone-hotspot connection is another.
Buying a GPS? Read the USB GPS puck buying guide for the tested VK-162 u-blox 7 configuration, seller checklist and first-fix checks.
Use the Pi’s Mobile tab to prepare GPS positioning and Wi-Fi before travelling. You keep the same station and pairing. A fixed receiver can stay fixed while you test a GPS and save a hotspot.
1 · Prepare at home
Keep Ethernet or Home Wi-Fi connected. Sign in as the receiver administrator, open Mobile and choose Add Wi-Fi / hotspot. Enter your phone’s network name and password, enable Auto-join and save. Saving does not switch your current connection.
2 · Preview GPS
Connect a Linux-compatible USB NMEA GPS and choose Test GPS. Give it a clear view of the sky and wait for Fix acquired. Check the coordinates, fix age and reported accuracy. The preview does not move your fixed station or pause uploads.
3 · Enable positioning
With a fresh fix, choose Use GPS positioning or enable mobile operation. Read the cloud compatibility message before confirming. The local map follows valid GPS positions; enabling Mobile does not register another station.
4 · Check before leaving
Check GPS, saved networks, reception, queue/storage and power. Confirm the phone hotspot is reachable. A working Ethernet connection does not prove Wi-Fi handover. Check the receiver’s new address on your phone if the dashboard disconnects.
Need help with the GPS display? Understand the satellite view or set up GPS clock backup.
Which GPS, and what if it is not detected?
Known USB GNSS devices can be selected automatically. Generic USB-serial devices may need Select GPS device; select only your GPS, never a radio. No device, Acquiring satellites, Fix acquired, Fix lost and Permission/device issue describe different conditions. Reconnect the GPS, allow time for a fix and use Advanced diagnostics for device details. Not every USB device or retail revision is compatible.
Home Wi-Fi, phone hotspot and Ethernet
Save multiple networks with Auto-join enabled. Higher priority is preferred when reconnecting; it does not force a switch away from a healthy connection. When Home Wi-Fi disappears, a reachable saved hotspot can be joined. Keep the internet adapter separate from Remote ID capture. For older adapters, enable the phone’s compatibility or 2.4 GHz mode.
Connect now explicitly switches Wi-Fi and can disconnect your browser. Keep Ethernet available for recovery when testing at home. A failed join retries the previous Wi-Fi within a bounded recovery period. Edit changes a saved profile; Forget removes it. Passwords are not shown back in status or diagnostics.
Local testing versus cloud uploads
GPS detection alone does not confirm that Layer400 can accept mobile observations. The Pi checks cloud compatibility before enabling Auto GPS. If it says Local GPS only — mobile observations are queued; not uploading yet., mobile uploads are held within the existing queue and storage limits. Keep Mobile off if you want to continue ordinary fixed uploads while testing the GPS.
Turning Mobile off restores the original fixed location and normal new fixed uploads. Older mobile observations keep their observation-time locations; they are never relabelled as receptions at home. A station without an original fixed location cannot restore one.
GPS or internet lost while travelling
A lost GPS fix leaves the last known pin clearly marked stale. It does not jump back to home or invent fresh positions. If internet is lost, the durable queue remains bounded by available storage and the receiver’s reserve. Restore connectivity and check accepted observations, not just the connection light. Do not assume unlimited offline storage or that removing power without shutdown is risk-free.
Local and work accounts
Local dashboard access is separate from your Linux/SSH password and your Layer400 website account. Keep a local administrator password as the recovery route before enabling directory sign-in.
Set up encrypted directory sign-in
- Sign in as the local administrator and open Password & access → Work accounts.
- Choose OpenLDAP or Active Directory, then enter the LDAPS server, port and search base. The hostname must match the server certificate.
- For OpenLDAP, supply the user base for
uid=usernameentries. For AD, supply the sign-in domain used for a UPN bind. - Enter the full group DNs allowed to administer or view the receiver. Only direct members count. OpenLDAP supports
member,uniqueMemberormemberUid; AD usesmember. - If needed, paste your organisation’s CA certificates in PEM format—not a private key. Blank uses the system trust store.
- Test an account, check its returned role, then save using the local receiver password. A successful draft test does not save the settings.
Use a short username on the sign-in form. TLS 1.2 or 1.3 and certificate/name checks are required. Plaintext LDAP, referrals, nested group expansion, domain joining and integrated Windows SSO are not provided.
What can each account do?
- Local administrator: manages receiver settings and access policy.
- Work administrator: manages the receiver but cannot replace local access or directory policy.
- View-only: reads status, history and charts; cannot change settings, install updates or download administrator diagnostics.
Work sessions last at most one hour. Group changes apply on the next sign-in; changing receiver directory policy revokes its existing work sessions. Local sessions have a one-hour idle limit and an eight-hour maximum. Directory passwords are not saved for offline sign-in.
Directory down or locked out?
Choose Local administrator on the login screen. Directory failures do not consume the separate local password attempt limit. If the local password is lost, run sudo layer400 management-password-reset directly on the Pi.
Never expose the local dashboard with router port forwarding. LAN viewing does not grant administrator access. Changing settings requires an authenticated administrator; keep your owner password safe and use a trusted network.
Integration checks use real OpenLDAP and Samba AD servers. Microsoft Windows Server itself has not yet been qualified; this is not a Windows SSO claim.
History and lifetime totals
History includes a one-year preset and a calendar for a day or date range. Dates use the receiver’s configured time zone. History shows received positions, not a reconstructed live flight.
History is bounded by age and storage: up to 366 days and 500,000 records per source, with bounded chart queries. Busy receivers can retain less than a year; deleted records cannot be recovered by selecting a longer range. Partial results and coverage limits are shown.
The accepted-observation lifetime total is kept separately from history cleanup. Large totals use a compact form such as 1.2B, with the exact total available to assistive tools. Reinstallation that deliberately removes receiver state is different from an update.
Updates and rollback
Keep the Pi powered while an update installs. Use Updates & rollback for signed online updates, a downloaded update file or an available previous release. A failed post-install health check can restore the previous version.
Current release notes and Update release notes open separate, closable windows. The default schedule is automatic installation within two days of discovering an eligible stable update, during 00:00–03:00 in the receiver’s time zone. Start times are spread between devices.
Change the maintenance schedule
Choose one day, two days, seven days or one calendar month, then a maintenance window of 1–12 hours. Save and check the confirmation. You can pause automatic installation; update checks still run and new releases remain visible.
A powered-off, disconnected, full or unhealthy receiver can miss its target. It retries in a later maintenance window without resetting the original target. Signature, compatibility and health checks are never skipped to meet a date. Rollback pauses automatic installation of the rejected release.
Find the problem
Start with Troubleshooting, not a reinstall. Open a system card for its last 24 hours: CPU load, temperature, memory, free disk, disk activity or power warnings. Missing measurements stay unknown.
Power warning or USB disconnects
Check the supply, cable and combined load from every radio, including ADS-B. A correctly rated PoE/PoE+ HAT or powered hub can help a suitable installation, but Pi USB limits still apply. Do not use a hub that back-feeds the Pi.
The power chart shows observed kernel warnings, not a voltage meter. Older boot flags cannot tell us when an event happened. Brief events between samples may be missed. Power and hardware guide.
Compare antennas or USB positions
Use the passive comparison tools here. Keep antenna placement and conditions consistent. Wait for enough fresh frames, then compare rates, errors and tuning delay. Disconnects, background tabs and gaps can invalidate a run. The tools do not retune your internet adapter or promise that the fastest channel switch has the strongest signal.
Send a useful support report
Note the time, software version, what changed and the exact message. An administrator can download a bounded diagnostic report with service, power, storage and radio details. Review it before sharing. Automatic support reporting has a separate preference; detailed diagnostic logs are not silently uploaded.
For a model we have not seen, include its USB identity and driver from device details. Send a private hardware report.
Find the local setup address again:
sudo layer400 setupNeed a hand? Talk to Layer400.