Versions Compared

Key

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

This document contains the steps for building OpenFJ / OpenSJ.

OpenFJ is intended for use in a vehicle (Toyota FJ Cruiser) for driving around Africa.

OpenSJ is the version for the ocean sailing vessel Sojourner.

This is a collection of hardware and software combined into an appliance to do the following:

  • RaspAP - Routing and VPN access: one wifi SSID that routes traffic to a local wifi (hotel, marina, etc.) and activates a VPN.

  • LTE Modem - Add a local 4G SIM card for internet access

  • Airtunes - enable music streaming over airtunes to an amplifier

  • GPS NMEA - capture GPS data with gpsd

  • NTP - synchronize time over GPS

  • kismet: wardriving/warsailing data collection with a secondary wifi antenna

  • Camera capture

    • ALPR

    • People counter

    • Dashcam / Cabincam

  • OBD-II interface: capturing FJ telemetry

  • Accelerometer/gyroscope: capturing acceleration in three axis for

  • Thermometer: measuring internal temperature and humidity (i.e. for cigar storage)

  • 360° camera capture and IPFS integration

  • Remote storage and backup support

    • USB drive

    • Flipper Zero

  • Dynamic sailboat polar calculation for optimizing weather routing

  • Sensor integration (bilge/water sensor)

Hardware

The base hardware configuration:

Device

Description

Approximate cost

Raspberry Pi 3B

Probably better to buy a newer device with more RAM.

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

64GB SD storage card

SanDisk 64GB

$12

NoIR / Wide camera

Raspberry Pi, V3

$35

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

$4

Gyroscope

Total

~ $500

...

Raspbian install

Install the latest version of 64-bit Raspbian and configure to work headless.

...

Code Block
sudo apt-get update
sudo apt-get full-upgrade
sudo reboot

Routing

Install RaspAP to enable routing across wifi networks. Passengers will connect to OpenFJ/OpenSJ, but RaspAP can be configured to route through any local wifi access point or LTE modem.

...

To validate with the RaspAP repository on github, a ssh-key needs to be added on OpenFJ/OpenSJ to validate with github.

First, generate an ssh key with the GitHub email address:

...

Your AP's basic settings and many advanced options are now ready to be modified by RaspAP.

Insider settings

Rerun the installer with the upgrade option for the insider settings

Code Block
mtb@OpenFJ:~ $ curl -sL https://install.raspap.com | bash -s -- --upgrade --insiders --name miketangobravo --token ghp_E1ImsfA33SNoZlFppV9KFPcD7Ads3V0sJyB


 888888ba                              .d888888   888888ba
 88     8b                            d8     88   88     8b
a88aaaa8P' .d8888b. .d8888b. 88d888b. 88aaaaa88a a88aaaa8P
 88    8b. 88    88 Y8ooooo. 88    88 88     88   88
 88     88 88.  .88       88 88.  .88 88     88   88
 dP     dP  88888P8  88888P  88Y888P  88     88   dP
                             88
                             dP      version 3.0.3 Insiders

The Quick Installer will guide you through a few easy steps


RaspAP Install: Configure upgrade
Detected OS: Debian GNU/Linux 12 (bookworm) 64-bit
Using GitHub repository: RaspAP/raspap-insiders 3.0.3 branch
Configuration directory: /etc/raspap
lighttpd root: /var/www/html? [Y/n]: Y
Upgrading lighttpd directory: /var/www/html
This will upgrade your existing install to version 3.0.3 Insiders
Your configuration will NOT be changed
Complete upgrade with these values? [Y/n]: Y
RaspAP Install: Updating sources
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Hit:4 http://archive.raspberrypi.com/debian bookworm InRelease
Reading package lists...
RaspAP Install: Checking for systemd network services
systemd-networkd.service is not running (ok)
systemd-resolved.service is not running (ok)
[ ✓ ok ] 
RaspAP Install: Installing required packages
php8.2-cgi will be installed from the main deb sources list
dhcpcd5 and iw will be installed from the main deb sources list
curl dnsutils nmap will be installed from the main deb sources list
Reading package lists...
Building dependency tree...
Reading state information...
lighttpd is already the newest version (1.4.69-1).
git is already the newest version (1:2.39.2-1.1).
hostapd is already the newest version (2:2.10-12).
dnsmasq is already the newest version (2.89-1).
iptables-persistent is already the newest version (1.0.20).
php8.2-cgi is already the newest version (8.2.7-1~deb12u1).
dhcpcd5 is already the newest version (9.4.1-24~deb12u3).
iw is already the newest version (5.19-1).
curl is already the newest version (7.88.1-10+deb12u5).
dnsutils is already the newest version (1:9.18.19-1~deb12u1).
nmap is already the newest version (7.93+dfsg1-1).
vnstat is already the newest version (2.10-2).
qrencode is already the newest version (4.1.1-1).
jq is already the newest version (1.6-2.1).
isoquery is already the newest version (3.3.3-1).
The following packages were automatically installed and are no longer required:
  agnostics bluez dos2unix fio fonts-piboto grim gtk2-engines-pixbuf
  gtk2-engines-pixflat gui-pkinst ibverbs-providers libaio1 libaml0
  libatkmm-1.6-1v5 libboost-iostreams1.74.0 libcairomm-1.0-1v5 libcupsimage2
  libdaxctl1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgfapi0 libgfrpc0
  libgfxdr0 libglibmm-2.4-1v5 libglusterfs0 libgtkmm-3.0-1v5 libibverbs1
  libliftoff-rpi libnbd0 libndctl6 libneatvnc0 libnma-common libnma0
  libpangomm-1.4-1v5 libpmem1 libpmemblk1 librados2 librbd1 librdmacm1
  libseat1 libsigc++-2.0-0v5 libwf-config1 libwf-utils0 libwlroots11
  libxcb-res0 lp-connection-editor lxplug-bluetooth lxplug-cputemp
  lxplug-ejecter lxplug-magnifier lxplug-menu lxplug-netman lxplug-network
  lxplug-ptbatt lxplug-updater lxplug-volumepulse mate-polkit-bin pi-greeter
  pi-language-support pi-printer-support pipanel pishutdown pixflat-icons
  pixflat-theme printer-driver-escpr pulseaudio-module-bluetooth
  qt5-gtk2-platformtheme qt5-style-plugin-cleanlooks qt5-style-plugin-motif
  qt5-style-plugin-plastique qt5-style-plugins qt5ct rp-bookshelf
  rpd-wallpaper wayfire wayvnc wf-panel-pi xsettingsd xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[ ✓ ok ] 
RaspAP Install: Enabling PHP for lighttpd
already enabled
Run "service lighttpd force-reload" to enable changes
RaspAP Install: Creating RaspAP directories
Creating /etc/raspap/networking
Changing file ownership of /etc/raspap
RaspAP Install: Checking for existing configs
[ ✓ ok ] 
RaspAP Install: Cloning latest files from GitHub
Cloning into '/tmp/raspap-webgui'...
RaspAP Install: Installing application to /var/www/html
Copying primary RaspAP config to /var/www/html/includes/config.php
Removing source files at /tmp/raspap-webgui
[ ✓ ok ] 
RaspAP Install: Changing file ownership in web root directory
RaspAP Install: Creating hostapd logging & control scripts
[ ✓ ok ] 
RaspAP Install: Creating lighttpd control scripts
Copying configport.sh to /etc/raspap/lighttpd
Changing file ownership
[ ✓ ok ] 
RaspAP Install: Copying lighttpd extra config files
Copying 50-raspap-router.conf to /etc/lighttpd/conf-available
Creating link to /etc/lighttpd/conf-enabled
Existing 50-raspap-router.conf found. Unlinking.
Linking 50-raspap-router.conf to /etc/lighttpd/conf-enabled/
[ ✓ ok ] 
RaspAP Install: Copying defaults.json to /etc/raspap/networking/
RaspAP Install: Configuring networking
Enabling IP forwarding
net.ipv4.ip_forward = 1
Restarting procps (via systemctl): procps.service.
Checking iptables rules
Rule already exits: -A POSTROUTING -j MASQUERADE
Rule already exits: -A POSTROUTING -s 192.168.50.0/24 ! -d 192.168.50.0/24 -j MASQUERADE
Enable RaspAP control service (Recommended)? [Y/n]: Y
RaspAP Install: Enabling RaspAP daemon
Disable with: sudo systemctl disable raspapd.service
[ ✓ ok ] 
RaspAP Install: Configure ad blocking
Install ad blocking and enable list management? [Y/n]: Y
RaspAP Install: Creating ad blocking base configuration (Beta)
Creating /etc/raspap/adblock
Fetching latest hostnames list
/tmp/hostnames.txt  100%[===================>]   4.21M  7.85MB/s    in 0.5s    
Fetching latest domains list
/tmp/domains.txt    100%[===================>]   6.02M  3.14MB/s    in 1.9s    
Adding blocklists to /etc/raspap/adblock
Moving and setting permissions for blocklist update script
changed ownership of '/etc/raspap/adblock/domains.txt' from root:root to root:www-data
changed ownership of '/etc/raspap/adblock/hostnames.txt' from root:root to root:www-data
Enabling local DNS name resolution for DHCP clients
Enabling ad blocking management option
[ ✓ ok ] 
RaspAP Install: Configure OpenVPN support
Install OpenVPN and enable client configuration? [Y/n]: Y
RaspAP Install: Installing OpenVPN and enabling client configuration
Adding packages via apt-get
Reading package lists...
Building dependency tree...
Reading state information...
openvpn is already the newest version (2.6.3-1+deb12u2).
The following packages were automatically installed and are no longer required:
  agnostics bluez dos2unix fio fonts-piboto grim gtk2-engines-pixbuf
  gtk2-engines-pixflat gui-pkinst ibverbs-providers libaio1 libaml0
  libatkmm-1.6-1v5 libboost-iostreams1.74.0 libcairomm-1.0-1v5 libcupsimage2
  libdaxctl1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgfapi0 libgfrpc0
  libgfxdr0 libglibmm-2.4-1v5 libglusterfs0 libgtkmm-3.0-1v5 libibverbs1
  libliftoff-rpi libnbd0 libndctl6 libneatvnc0 libnma-common libnma0
  libpangomm-1.4-1v5 libpmem1 libpmemblk1 librados2 librbd1 librdmacm1
  libseat1 libsigc++-2.0-0v5 libwf-config1 libwf-utils0 libwlroots11
  libxcb-res0 lp-connection-editor lxplug-bluetooth lxplug-cputemp
  lxplug-ejecter lxplug-magnifier lxplug-menu lxplug-netman lxplug-network
  lxplug-ptbatt lxplug-updater lxplug-volumepulse mate-polkit-bin pi-greeter
  pi-language-support pi-printer-support pipanel pishutdown pixflat-icons
  pixflat-theme printer-driver-escpr pulseaudio-module-bluetooth
  qt5-gtk2-platformtheme qt5-style-plugin-cleanlooks qt5-style-plugin-motif
  qt5-style-plugin-plastique qt5-style-plugins qt5ct rp-bookshelf
  rpd-wallpaper wayfire wayvnc wf-panel-pi xsettingsd xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Enabling openvpn-client service on boot
RaspAP Install: Creating OpenVPN control scripts
[ ✓ ok ] 
RaspAP Install: Installing additional features (Insiders)
RaspAP Install: Feature mobile data clients
Installing required packages for mobile data clients
Reading package lists...
Building dependency tree...
Reading state information...
wvdial is already the newest version (1.61-6).
socat is already the newest version (1.7.4.4-2).
bc is already the newest version (1.07.1-3).
The following packages were automatically installed and are no longer required:
  agnostics bluez dos2unix fio fonts-piboto grim gtk2-engines-pixbuf
  gtk2-engines-pixflat gui-pkinst ibverbs-providers libaio1 libaml0
  libatkmm-1.6-1v5 libboost-iostreams1.74.0 libcairomm-1.0-1v5 libcupsimage2
  libdaxctl1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgfapi0 libgfrpc0
  libgfxdr0 libglibmm-2.4-1v5 libglusterfs0 libgtkmm-3.0-1v5 libibverbs1
  libliftoff-rpi libnbd0 libndctl6 libneatvnc0 libnma-common libnma0
  libpangomm-1.4-1v5 libpmem1 libpmemblk1 librados2 librbd1 librdmacm1
  libseat1 libsigc++-2.0-0v5 libwf-config1 libwf-utils0 libwlroots11
  libxcb-res0 lp-connection-editor lxplug-bluetooth lxplug-cputemp
  lxplug-ejecter lxplug-magnifier lxplug-menu lxplug-netman lxplug-network
  lxplug-ptbatt lxplug-updater lxplug-volumepulse mate-polkit-bin pi-greeter
  pi-language-support pi-printer-support pipanel pishutdown pixflat-icons
  pixflat-theme printer-driver-escpr pulseaudio-module-bluetooth
  qt5-gtk2-platformtheme qt5-style-plugin-cleanlooks qt5-style-plugin-motif
  qt5-style-plugin-plastique qt5-style-plugins qt5ct rp-bookshelf
  rpd-wallpaper wayfire wayvnc wf-panel-pi xsettingsd xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Installing configuration files and scripts
[ ✓ ok ] 
RaspAP Install: Feature dynamic dns
RaspAP Install: Configure Dynamic DNS support
Install ddclient and enable DDNS configuration? [Y/n]: Y
RaspAP Install: Installing required packages
Reading package lists...
Building dependency tree...
Reading state information...
ddclient is already the newest version (3.10.0-2).
The following packages were automatically installed and are no longer required:
  agnostics bluez dos2unix fio fonts-piboto grim gtk2-engines-pixbuf
  gtk2-engines-pixflat gui-pkinst ibverbs-providers libaio1 libaml0
  libatkmm-1.6-1v5 libboost-iostreams1.74.0 libcairomm-1.0-1v5 libcupsimage2
  libdaxctl1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgfapi0 libgfrpc0
  libgfxdr0 libglibmm-2.4-1v5 libglusterfs0 libgtkmm-3.0-1v5 libibverbs1
  libliftoff-rpi libnbd0 libndctl6 libneatvnc0 libnma-common libnma0
  libpangomm-1.4-1v5 libpmem1 libpmemblk1 librados2 librbd1 librdmacm1
  libseat1 libsigc++-2.0-0v5 libwf-config1 libwf-utils0 libwlroots11
  libxcb-res0 lp-connection-editor lxplug-bluetooth lxplug-cputemp
  lxplug-ejecter lxplug-magnifier lxplug-menu lxplug-netman lxplug-network
  lxplug-ptbatt lxplug-updater lxplug-volumepulse mate-polkit-bin pi-greeter
  pi-language-support pi-printer-support pipanel pishutdown pixflat-icons
  pixflat-theme printer-driver-escpr pulseaudio-module-bluetooth
  qt5-gtk2-platformtheme qt5-style-plugin-cleanlooks qt5-style-plugin-motif
  qt5-style-plugin-plastique qt5-style-plugins qt5ct rp-bookshelf
  rpd-wallpaper wayfire wayvnc wf-panel-pi xsettingsd xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Enabling ddclient.service
Synchronizing state of ddclient.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ddclient
Enabling Dynamic DNS management option
[ ✓ ok ] 
RaspAP Install: Configure Firewall
Install iptables templates and enable firewall configuration? [Y/n]: Y
Creating firewall configuration directory
Copying config/iptables_rules.json to /etc/raspap/networking/firewall/
Enabling Firewall management option
[ ✓ ok ] 
RaspAP Install: Configure WireGuard support
Install WireGuard and enable VPN tunnel configuration? [Y/n]: Y
RaspAP Install: Configure WireGuard support
Installing wireguard from apt
Reading package lists...
Building dependency tree...
Reading state information...
wireguard is already the newest version (1.0.20210914-1).
resolvconf is already the newest version (1.91+nmu1).
The following packages were automatically installed and are no longer required:
  agnostics bluez dos2unix fio fonts-piboto grim gtk2-engines-pixbuf
  gtk2-engines-pixflat gui-pkinst ibverbs-providers libaio1 libaml0
  libatkmm-1.6-1v5 libboost-iostreams1.74.0 libcairomm-1.0-1v5 libcupsimage2
  libdaxctl1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgfapi0 libgfrpc0
  libgfxdr0 libglibmm-2.4-1v5 libglusterfs0 libgtkmm-3.0-1v5 libibverbs1
  libliftoff-rpi libnbd0 libndctl6 libneatvnc0 libnma-common libnma0
  libpangomm-1.4-1v5 libpmem1 libpmemblk1 librados2 librbd1 librdmacm1
  libseat1 libsigc++-2.0-0v5 libwf-config1 libwf-utils0 libwlroots11
  libxcb-res0 lp-connection-editor lxplug-bluetooth lxplug-cputemp
  lxplug-ejecter lxplug-magnifier lxplug-menu lxplug-netman lxplug-network
  lxplug-ptbatt lxplug-updater lxplug-volumepulse mate-polkit-bin pi-greeter
  pi-language-support pi-printer-support pipanel pishutdown pixflat-icons
  pixflat-theme printer-driver-escpr pulseaudio-module-bluetooth
  qt5-gtk2-platformtheme qt5-style-plugin-cleanlooks qt5-style-plugin-motif
  qt5-style-plugin-plastique qt5-style-plugins qt5ct rp-bookshelf
  rpd-wallpaper wayfire wayvnc wf-panel-pi xsettingsd xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Enabling wg-quick@wg0
Enabling WireGuard management option
[ ✓ ok ] 
RaspAP Install: Configure VPN provider support (Beta)
Enable VPN provider client configuration? [Y/n]: n
[ ✓ ok ] (Skipped)
RaspAP Install: Adding raspap.sudoers to /etc/sudoers.d/090_raspap
RaspAP Install: Copying RaspAP debug log control script
RaspAP Install: Copying RaspAP install loader
RaspAP Install: Symlinked wpa_supplicant hooks for multiple wlan interfaces
[ ✓ ok ] 
RaspAP Install: Installation completed

Thank you for supporting this project as an Insider!

Basic Settings

After running the Quick installer or following the manual installation steps, RaspAP will start up a routed wireless access point (AP) with a default configuration. As part of this initial setup, the hostapd service broadcasts an AP with the following settings:

...

At this point, a dialog will appear to indicate the progress of the RaspAP service. This is a Linux systemd process that is responsible for starting up several network services in a specific order and timing.

WIFI Routing

With the USB dongle connected and AP active, use RaspAP's WiFi client interface to select and authenticate with your existing wireless router.

...

This is reflected in the updated routing table, visible on the Networking interface. In the example below, the wlan0 interface hosting the AP no longer has a default route and shows a higher metric value (lower priority) than the wlan1 interface:

...

LTE modem

Connect the 4G LTE wifi dongle.

https://imi-link.com/portfolio/im920d-4g-wifi-dongle/

OpenFJ/OpenSJ static network configuration

Code Block
sudo nmcli con mod "Wired connection 2" ipv4.gateway 192.168.100.1
sudo nmcli con mod "Wired connection 2" ipv4.dns "192.168.100.1"
sudo nmcli con mod "Wired connection 2" ipv4.dns "8.8.8.8"
sudo nmcli c down "Wired connection 2" && sudo nmcli c up "Wired connection 2"
  
nmcli -p connection show "Wired connection 2"

===============================================================================
                Connection profile details (Wired connection 2)
===============================================================================
connection.id:                          Wired connection 2
connection.uuid:                        6a579dd4-a352-3105-98b6-f6a819a3f200
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              usb0
connection.autoconnect:                 yes
connection.autoconnect-priority:        -999
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1700673206
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.dns-over-tls:                -1 (default)
connection.mptcp-flags:                 0x0 (default)
connection.wait-device-timeout:         -1
connection.wait-activation-delay:       -1
-------------------------------------------------------------------------------
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
802-3-ethernet.accept-all-mac-addresses:-1 (default)
-------------------------------------------------------------------------------
ipv4.method:                            manual
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.100.69/24
ipv4.gateway:                           192.168.100.1
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.replace-local-rule:                -1 (default)
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-iaid:                         --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.dhcp-hostname-flags:               0x0 (none)
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.required-timeout:                  -1 (default)
ipv4.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv4.link-local:                        0 (default)
ipv4.dhcp-reject-servers:               --
ipv4.auto-route-ext-gw:                 -1 (default)
-------------------------------------------------------------------------------
ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.routing-rules:                     --
ipv6.replace-local-rule:                -1 (default)
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.required-timeout:                  -1 (default)
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     default
ipv6.ra-timeout:                        0 (default)
ipv6.mtu:                               auto
ipv6.dhcp-duid:                         --
ipv6.dhcp-iaid:                         --
ipv6.dhcp-timeout:                      0 (default)
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
ipv6.dhcp-hostname-flags:               0x0 (none)
ipv6.auto-route-ext-gw:                 -1 (default)
ipv6.token:                             --
-------------------------------------------------------------------------------
proxy.method:                           none
proxy.browser-only:                     no
proxy.pac-url:                          --
proxy.pac-script:                       --
-------------------------------------------------------------------------------
===============================================================================
       Active connection details (6a579dd4-a352-3105-98b6-f6a819a3f200)
===============================================================================
GENERAL.NAME:                           Wired connection 2
GENERAL.UUID:                           6a579dd4-a352-3105-98b6-f6a819a3f200
GENERAL.DEVICES:                        usb0
GENERAL.IP-IFACE:                       usb0
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.SPEC-OBJECT:                    --
GENERAL.VPN:                            no
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/6
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/6
GENERAL.ZONE:                           --
GENERAL.MASTER-PATH:                    --
-------------------------------------------------------------------------------
IP4.ADDRESS[1]:                         192.168.100.69/24
IP4.GATEWAY:                            192.168.100.1
IP4.ROUTE[1]:                           dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.100.1, mt = 100
IP4.DNS[1]:                             8.8.8.8
-------------------------------------------------------------------------------
IP6.ADDRESS[1]:                         fe80::9b9e:763e:c952:b6b4/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 1024
-------------------------------------------------------------------------------

SmartiPi Case setup

Now that the base operating system and networking have been configured, we can stuff the hardware into the SmartiPi case and utilize the touchscreen.

These instructions for putting the case together are an edited version of the assembly instructions found here. There will be leftover screws.

Step 1

Insert the female end of the Micro USB power splitter cable into the back cover as shown below.

...

Step 2

Use the two small black screws to secure the small plastic retaining part to the back cover. This will hold the power cable in the case.

Do not overtighten the screws!

...

Step 3

Assemble the metal base on the bottom of the plastic base. The metal base can only properly assemble onto the base one way. Please make sure all of the holes are aligned. Use the four silver screws to attach the metal base to the plastic base. Assemble the screws as shown in the photo. Then assemble the adhesive rubber feet in the locations show below.

...

Step 4

Assemble one of the white ribbon cables with the contacts facing up to the display connection on the display board. If using the fan, connect the red jumper lead that came with the display to the 5v connection on the display board GPIO pins and the black jumper lead to the ground pin. Remove the standoffs that attach the display board to the display and replace with the provided gold screws.

...

Step 5

Attach the display to the housing using the green screws as shown below. Feed the white ribbon cable through the slot in the center of the housing. Feed the fan power leads through the hole at the top.

...

Step 6

Assemble the port block part and the Raspberry Pi at the same time to the display housing. Use the standoffs that were removed in step 4 to hold the Raspberry pi in place.

...

Step 7

Connect the camera.

...

Step 8

Permanently cover the camera hole with the adhesive front panel.

page7image3511911248

Step 9

Assemble the display housing to the stand with the large black screws and nuts. DO NOT OVERTIGHTEN. Loosely attach the screws at this point.

...

Step 10

Attach the small rubber vibration mounts to the holes in the back cover as shown below. Push the small end of the mount through the back cover from the outside. Then pull it through the cover as shown.

...

Step 11

Then pull the rubbers mounts through the fan holes and pull the thin end of the mount until the
fan is mounted on the rubber mount as shown below. The fan should only be mounted in the way as shown below.

...

Step 12

Attach the power leads from the display to the red and black on the fan.

...

Step 13

Attach the power cables to the Pi and the display.

...

Step 14

Assemble the back cover to the display housing with the four black screws. The port blocking part should have tabs that fit inside the housing and cover.

...

Step 17

Adjust the angle of the display to suit you needs. Then tighten the pivot screws.
DO NOT OVERTIGHTEN. Tighten the screws just enough to hold the display in place.

...

Keyboard and Mouse

We need a keyboard and mouse to work with this device.

...

Code Block
sudo wget https://github.com/remotepi/examples/raw/master/drivers/remotepi_1.0.17_armhf.deb
sudo dpkg -i remotepi_1.0.17_armhf.deb
sudo /etc/init.d/remotepi start

Airtunes

This tutorial  involves configuring the the open-source AirPlay receiver called Shairport Sync. Most of the contents found in this section were directly lifted from here.

...

And to adjust the output volume:

alsamixer

...

The pi uses a 4-Pole 3.5mm audio jack:

...

The sound quality of the on-board line-out jack on the raspberry pi is nominal.

GPS NMEA

Plug in the Garmin 296 GPS with a USB cable.

Does the RPI see the UPS?

...

Code Block
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket

location

gpspipe -r

gpsbabel

foxtrotgps

gpsmon

Traccar

Traccar is the service for tracking the OpenFJ route, and providing a link for outside observers to follow.

...

Email: admin
Password: admin

time

sudo apg-get install ntp

sudo vi /etc/ntpsec/ntp.conf

ntpq -p

FindMyCar

OBD-II - over bluetooth

Camera Module

ALPR

People counter

360?

Environmental sensors

SDL

pwnagotchi

kismet

From this tutorial,

Install the kismet packages:

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

...

Code Block
sudo usermod -aG kismet pi
sudo usermod -aG kismet mtb
sudo reboot
groups

Device Support

Check for device support:

...

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.

...

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)
        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

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 58  bytes 6735 (6.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 6735 (6.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mon1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        unspec 3C-49-37-07-17-A0-3A-30-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 631  bytes 195587 (191.0 KiB)
        RX errors 0  dropped 631  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<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:75  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 12099 (11.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 105  bytes 17189 (16.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Configuring Kismet

Edit the kismet configuration file

Code Block
sudo vi /etc/kismet/kismet_site.conf

source=mon1
source=hci0

Start Kismet

Code Block
mtb@OpenFJ:~ $ kismet

KISMET - Point your browser to http://localhost:2501 (or the address of this system) for the Kismet UI

WIGLE

TPMS

915Mhz sensor

Mounting in the FJ