ADVARSEL: Alt gikk galt i slutten av denne guiden. Ikke følg den. Den får bli stående som en advarsel — og som bevis på at selv enkle operasjoner kan ta livet av et helt system.
Bakgrunn
Jeg har en ConBee II ZigBee-antenne liggende klar til bruk. Den har ligget i en boks merket «SMARTHUS» i ukesvis fordi planen er å flytte Home Assistant fra en Raspberry Pi til Docker. Men for å få det til, må USB-en passthrough’es hele veien gjennom stacken — fra fysisk maskin, gjennom ESXi, gjennom XPEnology, og inn i Docker-containeren.

Jeg forsøkte flere ganger å spontankjøpe antennen i en elektronikkbutikk lokalt, men de tok den aldri inn. Så det ble spontankjøp på nett i stedet. Jeg ble kjempeglad da den ankom — og la den rett i boksen. Der lå den altså til i dag.



Arkitekturen — eller: hvorfor dette er vanskelig
Home Assistant kjører i Docker, som kjører på XPEnology, som kjører på ESXi, som kjører på serveren. Antennen må altså passthrough’es gjennom tre lag for å nå frem. Jeg laget denne plansjen for å visualisere galskapen:

Steg 1: ESXi USB passthrough (RØDT lag)

Planen var enkel:
- Gå til Manage → Hardware → PCI Devices
- Velg USB-kontrolleren for passthrough
- Restart
Men er du like uheldig som meg, er alt her grået ut. Du kan egentlig ikke passthrough’e noe som helst.

Hacke det til via SSH
Frykt ikke — vi kan hacke dette til. Vi må SSH-e inn og finne PCI-ID-ene til USB-kontrolleren for å manuelt legge dem inn i passthru.map.


Kommandoen lspci viser alle PCI-enheter, mens lspci -n gir deg de numeriske ID-ene vi trenger:


Nå vet vi PCI-adressen: 8086:a36d. Vi legger dette inn i passthrough-konfigurasjonen:
vi /etc/vmware/passthru.map
# Legg til nederst:
8086 a36d d3d0 false
d3d0 er ønsket reset-metode på PCI-kontrolleren, og false betyr at vi ikke vil ha «Full Passthrough Shareable». Vi kjører safe.
Katastrofen
Etter restart ble USB-kontrolleren sendt videre — men det betydde at ESXi ikke lenger kunne nå sin egen datastore på USB. Og heller ikke oppdatere sin egen konfigurasjon. Som lå på USB.
Jeg prøvde å fikse dette omtrent 20 ganger før det gikk opp for meg hva som egentlig hadde skjedd. Til slutt mountet jeg USB-pennen på en Raspberry Pi for å rette opp innstillingene manuelt. Det gikk heller ikke — fordi jeg endret på feil partisjon.
Da jeg endelig fant riktig partisjon, ble jeg møtt av dette:

Jeg ga fullstendig opp og skulle reverte til backup. Men backupen? Backupen lå selvsagt på XPEnology — som nå var utilgjengelig. Hurra.
Etter litt sjelesøking fant jeg en eldre backup på en ekstern disk. Den fungerte godt nok. XPEnology kom opp igjen. Docker ville ikke starte.



Lærdom
Passthrough-eventyret er satt på vent etter total feil av systemet. Det kom såvidt tilbake. Nå må jeg sette opp alle Docker-containere (utenom SABnzbd og Ghost) på nytt. Ingen filer ble mistet — men det var flaks, ikke planlegging.
Viktigste lærdom: Ha skikkelig backup av Docker-konfigurasjonen. Det blir høyt prioritert nå.



