Hardware & Field
TcXWave
Turning locked-down POS terminals into kiosks, and reading their firmware first.
Problem
Four Toshiba TCxWave 6140-E45 point-of-sale terminals, destined to become wall-mounted home-automation kiosks. They fought back: locked boot behaviour, a touch panel that would not wake the screen, USB ports that needed cycling after power events, and firmware of unknown provenance. Before trusting them on the network, I wanted to know exactly what was inside.
Diagnosis
Two problems, one before the other. First, understand the firmware: if these machines were going to boot my OS and join my network, I needed a verified copy of what shipped on them. Second, tame the hardware: touch wake, USB cycling, and power behaviour are all firmware/BIOS-level problems, not operating-system ones.
Action
- Dumped both 32 MiB SPI flash chips with
flashrom, twice each, and hash-compared the reads - Parsed the Intel flash descriptor and ME regions with
ifdtooland a small Python script - Extracted the firmware tree: 11,074 files
- Decoded the BIOS setup language: 19,256 lines of IFR
- Inventoried 193 fan and thermal controls
- Wrote purpose-built scripts for the parts that were locked down: touch-to-wake, USB port cycling after power loss, and power tuning
- Netbooted NixOS onto each terminal from the fleet's boot infrastructure and mounted them around the house as kiosks
Outcome
- Four terminals in daily service as bedside, kitchen and office kiosks
- A verified, documented firmware baseline for hardware that shipped with none
- Reusable scripts for touch wake, USB recovery and power behaviour
- Point-of-sale e-waste doing useful work instead of going to a skip
What I'd do differently
Pending
Reflection to be written by Jupiter.
0
Open a window and its geometry shows up here.
No events yet.
The desk blanks itself after a quiet spell, then runs one of thirteen effects named after the IRIX screen savers. Move the pointer or press a key to wake it; lock it and only Unlock brings it back.
Settings load with the desktop.
The environment
About this desktop
jupiter.au is set up as a working desktop: the Toolchest, the objects, the status strip and the windows stay with you on every page. Drag a title bar to move a window, pull any edge or corner to resize it, drag it to the side of the desk to snap it into place, and right-click a title bar for that window's menu. Right-click the desk itself for the root menu.
Toolchest
The panel in the corner carries the classic seven menus — Desktop, Find, People, Applications, Shared Resources, System and Help — above the command field. Collapse it to the chip with the arrow in its title strip, or press Ctrl+K to bring it back.
Desks
Four desks, as 4Dwm kept them. Each surface belongs to the desk it was opened on — switch with the status strip, the Toolchest, or Ctrl+Alt+1…4. The Desks Overview window maps all four at once.
The catalogue
The Icon Catalogue lists every application the desk knows — click to select, double-click to open, right-click for the icon's own menu. The objects on the right edge can be dragged into a new order, and the one that will take the drop turns royal blue.
Customise
Desktop → Customise… holds the background (signal wash, flat or dim), the bevels (flat 2026 or the classic two-line), and the way to the Screen Saver. Choices stick to this machine.
Screen saver
Thirteen effects named after the IRIX screen savers, with a timeout, a Random mode and an optional lock. Open the Screen Saver window to change them.
Desks
Four desks, as 4Dwm kept them. Each surface belongs to the desk it was opened on — switch with the status strip, the Toolchest, or Ctrl+Alt+1…4.
Winterm
Type help for the commands — ls, open,theme, date.
Loading the desks…
12 icons shown; sorted by Name
No audio hardware on this host.
Background
Bevels
Screen saver
The timeout, the effect and the lock live in the Screen Saver window.
