Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Device

Description

Approximate cost

Raspberry Pi 3B

Probably better to buy a newer device with more RAM.

$45 (RPI 3B+, 1GB)
$135 (RPI 5

$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
$250 used Garmin 296

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

...