ThinkSmart View
A Lenovo Teams appliance freed from its kiosk, running mainline Linux with the speaker driver its manufacturer never wrote down.
What it is
A Lenovo ThinkSmart View — an 8-inch touchscreen on a stand, APQ8053 with eight A53 cores, 2 GB of RAM, 8 GB of eMMC — built to run exactly one application, Microsoft Teams. Offices bought them by the pallet and then moved on, so they sell used for about the price of a takeaway.
It is a perfectly good little computer wearing a straitjacket.
It now runs postmarketOS with Phosh, boots without an unlocked bootloader, plays sound through a speaker that mainline could not see, and streams video fullscreen at the panel’s native resolution.
How it got there
The way in is Qualcomm’s Emergency Download mode, and the wall behind it is the part that eats these devices: EDL gives you a handshake and nothing more until you upload a firehose programmer signed by the same OEM key. qdl chipinfo prints the HW ID and OEM PK hash that name the right one, and bkerler’s edl collection already had an exact match on disk.
The second trap is the obvious move. fastboot oem unlock-go works — and then the device, which is AVB1 secure boot, never boots again. The correct play is to leave the bootloader locked and flash an AVB1-signed lk2nd to boot, which chainloads whatever you want.
Before any of it: 52 partitions, 2.8 GB, read back over firehose and MD5-verified onto two machines.
The driver
The device came up silent — not broken sound, no sound card at all. Its TI TAS5782M amplifier never bound, because mainline’s tas5805m driver only matches ti,tas5805m, so the ASoC card never finished probing and ALSA listed nothing.
Exactly one implementation of TAS5782M support exists anywhere on the internet: a branch in Felix Kaechele’s fork, last touched July 2024, never submitted to alsa-devel. Two people had independently written this driver downstream and neither version had ever reached upstream. Forward-porting it to kernel 7.1.3 took one change — snd_soc_kcontrol_component() is gone, so the volume callbacks use snd_kcontrol_chip().
A device-tree fix went upstream (aux-devices is a dead property here; the patch deletes the line rather than “correcting” the spelling into a duplicate binding). The driver did not go out under my name — it is Kaechele’s work, and it went into a postmarketOS package with attribution while its author was asked whether they would rather submit it themselves.

What it does now
A digital aquarium: Google’s WebGL Aquarium, fullscreen at native resolution, served off local disk with no internet at all. 26 frames per second. For fish, that is fine.
Fullscreen video decodes in software at 1.85× realtime on about a third of the CPU, +5 °C after four minutes with no throttling — which was the first of four confident guesses the measurements demolished.
Technical details
| SoC | Snapdragon 625-class APQ8053, 8 × Cortex-A53 |
| Memory | 2 GB RAM, 8 GB eMMC |
| OS | postmarketOS + Phosh, kernel 7.1.3 |
| Boot | Locked bootloader, AVB1-signed lk2nd chainload |
| Audio | TAS5782M via forward-ported tas5805m driver |
| GPU | Adreno a5xx — GL only; Chromium needs Vulkan and dies |
The full build log — the signed-firehose wall, the driver nobody had sent anyone, and the four times I was confidently wrong — is in two years downstream.