-
1Step 1 — Gather the hardware
Full list with notes is in the Components section. The minimum to get a working panel: Pi 5, the 3.5" ILI9486 screen, a 27W USB-C supply, an active cooler, and a decent microSD. The ALFA, CAN dongle, and SDR are all optional — their tiles simply don't appear until they're plugged in.
Do not skimp on the power supply. An underpowered Pi 5 with dongles attached produces intermittent faults you will spend a day blaming on software.
-
2Step 2 — Flash Kali and get in over SSH
Write the Kali Raspberry Pi image to the microSD, enable SSH, and boot the Pi with a network cable and no screen attached. Everything from here is done over SSH — the panel isn't alive yet.
Update before you touch anything else:
sudo apt update && sudo apt full-upgrade -y
-
3Step 3 — Bring up the panel
This is the step that eats afternoons, so it's deliberately minimal. Two lines in
/boot/firmware/config.txt:dtparam=spi=on dtoverlay=piscreen,drm,rotate=90
Reboot. That's the entire display configuration.
rotateis the only display setting that requires a reboot — pick 90 or 270 depending on which way up your case holds the panel. Touch orientation is handled in software, so you never come back to this file to fix taps landing in the wrong place.Verify the framebuffer exists:
ls -l /dev/fb0 cat /sys/class/graphics/fb0/name
You should see the ILI9486 DRM framebuffer. If
/dev/fb0is missing, stop here — nothing downstream will work. -
4Step 4 — Verify touch
sudo apt install -y evtest sudo evtest
Pick the ADS7846 device from the list and drag a finger across the panel. You want a stream of ABS_X / ABS_Y events. Note the device path — that's the evdev node the app reads directly. No X server, no touchscreen driver stack, no calibration utility.
Noisy or jumpy readings at this stage are normal for resistive touch. That's why the interface is taps only.
-
5Step 5 — Install dependencies
sudo apt install -y python3-pil python3-numpy python3-evdev \ network-manager arp-scan i2c-tools can-utils
Note what isn't here: no pygame, no SDL, no X. The app renders with PIL and numpy straight into the framebuffer.
[CONFIRM this list against a clean install — some of these ship with Kali and I built this incrementally rather than from scratch.]
-
6Step 6 — Install Scottina
git clone https://github.com/scottmclesly/Scottina.git sudo cp -r Scottina /opt/kilodash
Run it in the foreground first to confirm it paints:
sudo python3 /opt/kilodash/run.py
You should get the splash, then the tile grid. Quit with ESC or
qfrom an attached USB keyboard.It runs as root because it needs
/dev/fb0, the evdev node,nmcli, and arp-scan's raw sockets. -
7Step 7 — Make it boot straight to the panel
sudo cp /opt/kilodash/kilodash.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now kilodash
Reboot. The Pi should come up into the tile grid with no login, no desktop, no keyboard. That's the whole point of the build — if you're still seeing a console, the service didn't take.
-
8Step 8 — Fix your taps
Almost every panel needs axis flipping. Open Settings → Touch on the device and toggle invert-X, invert-Y, or swap-axes until taps land where you press. There's a Calibrate helper there too.
These are runtime settings written to
config.json— no reboot, no code edits, and you can also edit them over SSH if the panel is unusable enough that you can't reach Settings. -
9Step 9 — Plug something in
With the core running, hotplug does the rest. Plug in the RTL-SDR, the ALFA, or the CAN dongle and its tile appears on the home grid within a second. Unplug it and the tile disappears.
Nothing to configure. If a tile doesn't show up, the device didn't enumerate — check
lsusbbefore you check anything else. -
10Step 10 — Optional extras</h2>
Each of these is an idempotent installer under
setup/— safe to re-run, and none of them are needed for a working panel. Add them when you want the capability.sudo setup/install-phase4.sh # Node-RED, AIS-catcher, Signal K sudo setup/install-gps.sh # gpsd + chrony + snapshot daemon sudo setup/install-tables.sh # CAN/NMEA2000 decode-table service sudo setup/install-logic-analyzer.sh # sigrok + fx2lafw
The web-app backends take the longest — AIS-catcher builds from source. Start it and go make coffee.
A note on scope
This is a diagnostics tool and the install reflects that. There's no offensive tooling to enable, no hidden mode, no authorized-use toggle to flip. The LAN scanner builds every command as an argument array from a fixed set of intents with a hardcoded reject list — there is no raw-flag input anywhere in the UI.
The single exception is CAN, which does normal TX and RX. Heartbeats and replies are how you diagnose a bus.
Scottsky
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.