...
Device | Description | Approximate cost | ||
---|---|---|---|---|
Raspberry Pi 3B | Probably better to buy a newer device with more RAM. | $45 (RPI 3B+, 1GB) | $90(RPI 5, 8GB) | |
64GB SD storage card | SanDisk 64GB | $12 | ||
NoIR / Wide camera | Raspberry Pi, V3 | $35 | ||
52Pi NVDAC NVMe hat | Provides an M.2 connector for the Hailo AI chip and HiFiBerry DAC for decent audio output | $30 | ||
7” touchscreen | Raspberry Pi, official 7” screen | $97 | ||
Garmin 296 GPS | My aeronautical / marine GPS | $25 GPS modules available | ||
LTE modem | Generic USB / LTE modem | $18 | ||
USB Wifi module | Realtek RTL8812 support | $19 | ||
USB extenders | Right angle USB extenders | $8 | ||
SmartiPi case | Small RPI dashboard case | $33 | ||
USB storage | 1TB storage device | $20 | ||
Flipper Zero | shop.flipperzero.one | $169 | ||
Thermometer | DHT22 AM2302 or similar | $7 | ||
Accelerometer | ADXL345 IIC/SPI | $4Gyroscope | ||
AI Hat | Hailo 8L - 13 TOPS | $76 | ||
Total | ~ $500 |
...
Raspbian install
Install the latest version of 64-bit Raspbian and configure to work headless.
Do this without first connecting the additional WIFI adapters.
There are many ways to install raspbian, but the easiest is by using the Raspberry Pi imager:
...
Install the SD card in the Raspberry Pi, find the IP address, and connect via ssh.
2c:cf:67:75:
Code Block |
---|
mtb@MTBMBP ~ % arp -a ? (10.0.0.113) at b8:27:eb:b9:17:75 on en0 ifscope [ethernet] mtb@MTBMBP ~ % ssh 10.0.0.113 The authenticity of host '10.0.0.113 (10.0.0.113)' can't be established. ED25519 key fingerprint is SHA256:FFpeD1jIncN86IlDPaHfwOGKC1NuubTyEgwpq4nDTc. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Failed to add the host to the list of known hosts (/Users/mtb/.ssh/known_hosts). Linux openfj 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Dec 5 00:10:33 2023 |
...
Install RaspAP to enable routing across wifi networks. Passengers Crew members will connect to OpenFJ/OpenSJ, but RaspAP can be configured to route through any local wifi access point, Starlink, or LTE modem.
To utilize all of the network functions (like USB dongle support) RaspAP Insiders Edition is required. This requires becoming a patron for at least $10 per month of the RaspAP project.
...
Code Block |
---|
wget -O - https://www.kismetwireless.net/repos/kismet-release.gpg.key | sudo apt-key add - echo "deb https://www.kismetwireless.net/repos/apt/release/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kismet.list sudo apt update sudo apt install kismet |
...
Add a kismet group and add a user:
...
Code Block |
---|
mtb@OpenFJ:~ $ iw dev phy#1phy#2 Interface wlan1wlan2 ifindex 45 wdev 0x1000000010x200000001 addr 3c:49:37:07:17:a0 type managed txpower 3020.00 dBm phy#0 Unnamed/non-netdev interface wdev 0x2 addr ba:27:eb:b9:17:75 type P2P-device txpower 31.00 dBm Interface wlan0 ifindex 3 wdev 0x1 multicast TXQ: qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets 0 0 0 0 0 0 0 0 0 phy#1 Interface wlan1 ifindex 4 wdev 0x100000001 addr b850:2791:ebe3:b9c4:17:75 ssid planeta8m2f:36 type managed channeltxpower 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz txpower 31.00 dBm |
...
20.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
phy#0
Unnamed/non-netdev interface
wdev 0x2
addr 2e:cf:67:75:39:56
type P2P-device
txpower 31.00 dBm
Interface wlan0
ifindex 3
wdev 0x1
addr 2c:cf:67:75:39:56
ssid planeta8m
type managed
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
txpower 31.00 dBm
|
This iw command should produce a list similar to the one belowabove. Look for the wireless device that you intend on putting into monitoring mode (phy#1).
...
Code Block |
---|
mtb@OpenFJ:~ $ iw phy phy1 info
Wiphy phy1
wiphy index: 1
max # scan SSIDs: 4
max scan IEs length: 2257 bytes
max # sched scan SSIDs: 0
max # match sets: 0
RTS threshold: 2347
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Supported Ciphers:
* WEP40 (00-0f-ac:1)
* WEP104 (00-0f-ac:5)
* TKIP (00-0f-ac:2)
* CCMP-128 (00-0f-ac:4)
* CCMP-256 (00-0f-ac:10)
* GCMP-128 (00-0f-ac:8)
* GCMP-256 (00-0f-ac:9)
Available Antennas: TX 0x3 RX 0x3
Configured Antennas: TX 0x3 RX 0x3
Supported interface modes:
* managed
* monitor
Band 1:
Capabilities: 0x6c
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 16 usec (0x07)
HT TX/RX MCS rate indexes supported: 0-15, 32
Bitrates (non-HT):
* 1.0 Mbps
* 2.0 Mbps
* 5.5 Mbps
* 11.0 Mbps
* 6.0 Mbps
* 9.0 Mbps
* 12.0 Mbps
* 18.0 Mbps
* 24.0 Mbps
* 36.0 Mbps
* 48.0 Mbps
* 54.0 Mbps
Frequencies:
* 2412 MHz [1] (30.0 dBm)
* 2417 MHz [2] (30.0 dBm)
* 2422 MHz [3] (30.0 dBm)
* 2427 MHz [4] (30.0 dBm)
* 2432 MHz [5] (30.0 dBm)
* 2437 MHz [6] (30.0 dBm)
* 2442 MHz [7] (30.0 dBm)
* 2447 MHz [8] (30.0 dBm)
* 2452 MHz [9] (30.0 dBm)
* 2457 MHz [10] (30.0 dBm)
* 2462 MHz [11] (30.0 dBm)
* 2467 MHz [12] (disabled)
* 2472 MHz [13] (disabled)
* 2484 MHz [14] (disabled)
Supported commands:
* new_interface
* set_interface
* new_key
* start_ap
* new_station
* new_mpath
* set_mesh_config
* set_bss
* authenticate
* associate
* deauthenticate
* disassociate
* join_ibss
* join_mesh
* remain_on_channel
* set_tx_bitrate_mask
* frame
* frame_wait_cancel
* set_wiphy_netns
* set_channel
* probe_client
* set_noack_map
* register_beacons
* start_p2p_device
* set_mcast_rate
* connect
* disconnect
* set_qos_map
* set_multicast_to_unicast
software interface modes (can always be added):
* monitor
interface combinations are not supported
HT Capability overrides:
* MCS: ff ff ff ff ff ff ff ff ff ff
* maximum A-MSDU length
* supported channel width
* short GI for 40 MHz
* max A-MPDU length exponent
* min MPDU start spacing
Device supports TX status socket option.
Device supports HT-IBSS.
Device supports SAE with AUTHENTICATE command
Device supports low priority scan.
Device supports scan flush.
Device supports AP scan.
Device supports per-vif TX power setting
Driver supports full state transitions for AP/GO clients
Driver supports a userspace MPM
Device supports configuring vdev MAC-addr on create.
max # scan plans: 1
max scan plan interval: -1
max scan plan iterations: 0
Supported TX frame types:
* IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
Supported RX frame types:
* IBSS: 0x40 0xb0 0xc0 0xd0
* managed: 0x40 0xb0 0xd0
* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* mesh point: 0xb0 0xc0 0xd0
* P2P-client: 0x40 0xd0
* P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* P2P-device: 0x40 0xd0
Supported extended features:
* [ RRM ]: RRM
* [ FILS_STA ]: STA FILS (Fast Initial Link Setup)
* [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records
* [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211
* [ SCAN_RANDOM_SN ]: use random sequence numbers in scans
* [ SCAN_MIN_PREQ_CONTENT ]: use probe request with only rate IEs in scans
* [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support
* [ SCAN_FREQ_KHZ ]: scan on kHz frequency support
* [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support |
Configure wireless adapter
Edit the interfaces file, including allow-hotplug, and disable the wlan1 interface from automatically being assigned an IP address. Also, set up the monitor mode of the interface before it is brought up by the operating system.
We then proceed to delete the wlan1 interface as we do not require it for what we are doing.
Code Block |
---|
sudo vi /etc/network/interfaces
allow-hotplug wlan1
iface wlan1 inet manual
pre-up iw phy phy1 interface add mon1 type monitor
pre-up iw dev wlan1 del
pre-up ifconfig mon1 up |
Reboot OpenFJ, and check to see if mon1: appears under ifconfig
Code Block |
---|
sudo reboot mtb@OpenFJ:~ $ ifconfig -a eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether b8:27:eb:ec:42:20 txqueuelen 1000 (Ethernet * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * mesh point: 0xb0 0xc0 0xd0 * P2P-client: 0x40 0xd0 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * P2P-device: 0x40 0xd0 Supported extended features: * [ RRM ]: RRM * [ FILS_STA ]: STA FILS (Fast Initial Link Setup) * [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records * [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211 * [ SCAN_RANDOM_SN ]: use random sequence numbers in scans * [ SCAN_MIN_PREQ_CONTENT ]: use probe request with only rate IEs in scans * [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support * [ SCAN_FREQ_KHZ ]: scan on kHz frequency support * [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support |
Configure wireless adapter
Edit the interfaces file, including allow-hotplug, and disable the wlan1 interface from automatically being assigned an IP address. Also, set up the monitor mode of the interface before it is brought up by the operating system.
We then proceed to delete the wlan1 interface as we do not require it for what we are doing.
Code Block |
---|
sudo vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
# source /etc/network/interfaces.d/*
allow-hotplug wlan1
iface wlan1 inet manual
pre-up iw phy phy0 interface add mon1 type monitor
pre-up iw dev wlan1 del
pre-up ifconfig mon1 up |
Reboot OpenFJ, and check to see if mon1: appears under ifconfig
Code Block |
---|
mtb@OpenFJ:~ $ ifconfig -a eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 2c:cf:67:75:39:55 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 107 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 097 bytes 08561 (08.03 BKiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 097 bytes 08561 (08.03 BKiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> 0 collisions 0 mon1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 loopunspec 50-91-E3-C4-2F-36-3A-30-00-00-00-00-00-00-00-00 txqueuelen 1000 (Local LoopbackUNSPEC) RX packets 582604 bytes 6735687635 (6671.5 KiB) RX errors 0 dropped 02604 overruns 0 frame 0 TX packets 580 bytes 67350 (60.50 KiBB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 mon1wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 unspec 3C-49-37-07-17-A0-3A-30-00-00-00-00-00-00-00-00inet 192.168.1.38 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::85ea:5112:a12d:51ed prefixlen 64 scopeid 0x20<link> ether 2c:cf:67:75:39:56 txqueuelen 1000 (UNSPECEthernet) RX packets 631423 bytes 19558796390 (19194.01 KiB) RX errors 0 dropped 6312 overruns 0 frame 0 TX packets 0165 bytes 023998 (023.04 BKiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0wlan2: flags=4163<UP4099<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.45 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::f63c:c64d:b48f:23bf prefixlen 64 scopeid 0x20<link> ether b8:27:eb:b9:17:75ether 3c:49:37:07:17:a0 txqueuelen 1000 (Ethernet) RX packets 950 bytes 120990 (110.80 KiBB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1050 bytes 171890 (160.70 KiBB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
...