# Linux ja Realtek RTL9210 USB-NVMe-silta

> **Yhteenveto:**  
> • **Oireet:** Toistuvat USB-nollaukset, I/O-virheet tai levyt katoavat Linuxissa.  
> • **Vaikuttaa:** Realtek RTL9210 (vahvistettu) ja RTL9220 (mahdollisesti).  
> • **Syy:** Palautuminen sisäiseen ROM-muistiin (**f0.01**) tarkistussummavirheen jälkeen.  
> • **Vaikutus:** Pysyvä epävakaus, ei Linux-uudelleenohjelmointityökaluja saatavilla.  
> • **Korjaus:** Vain OEM-Windows-apuohjelmat voivat palauttaa laiteohjelmiston – Realtek estää avoimen lähdekoodin vaihtoehdot.

## Esipuhe

Vuonna 2025 pitäisi olla täysin järkevää käynnistää Raspberry Pi USB-liitännän kautta kytketyltä SSD-levyltä. Realtekin laiteohjelmiston omituisuuksien vuoksi tästä järkevästä tavoitteesta on kuitenkin tullut seikkailu. Kuukausien selittämättömän epävakauden jälkeen – satunnaiset nollaukset, katoavat levyt, vioittuneet tiedostojärjestelmät – kirjoittaja kokeili kaikkia tavallisia korjauksia: uusia kaapeleita, virtalähteellisiä hubeja, ytimen päivityksiä, USB-säätöjä ja laiteohjelmiston hienosäätöä. Läpimurto tuli vasta, kun ChatGPT vastasi outoon myöhäisillan kysymykseen:
"Onko mahdollista, että USB-NVMe-silta on palautunut vanhaan laiteohjelmistoon?"

## Johdanto

Jos Realtek-pohjainen NVMe-kotelo muuttuu yhtäkkiä epävakaaksi viikkojen moitteettoman toiminnan jälkeen – toistuvat USB-nollaukset, I/O-virheet tai katoavat levyt – et ole yksin. Tämä kaava on ilmennyt useissa merkeissä, nimettömistä yksiköistä tunnettuihin OEM-valmistajiin, kuten Sabrent ja Orico. Yhteinen nimittäjä: **Realtekin RTL9210 ja mahdollisesti RTL9220** USB-NVMe-siltapiirit.

Aluksi kaikki toimii. Sitten, näennäisesti ilman syytä, laite alkaa katketa kuormituksen alla tai pitkäaikaisessa käytössä, erityisesti Linux- tai Raspberry Pi -järjestelmissä. Todellinen syy ei ole SSD tai virtalähde – se on itse laiteohjelmiston ohjain, joka hiljaa palautuu **ROM-muistiin upotettuun varakoodiin**, versioon, jota Realtek edelleen toimittaa sisäisesti nimellä **f0.01**.

## Piilotettu mekanismi – Laiteohjelmiston palautus suunnittelun mukaan

Realtekin siltapiirit tallentavat toimintansa laiteohjelmiston ja konfiguraatiotiedot ulkoiseen SPI-muistiin. Käynnistyksen yhteydessä ohjain tarkistaa yksinkertaisen tarkistussumman. Jos tarkistussumma ei täsmää, se kieltäytyy lataamasta ulkoista laiteohjelmistoa ja käynnistyy sen sijaan sisäisestä ROM-muistista.

Tämä varalaiteohjelmisto on vanha ja viallinen. Siitä puuttuu useita USB-vakauskorjauksia ja linkkitilan hallinnan parannuksia, jotka ovat läsnä myöhemmissä versioissa, mikä johtaa klassiseen sekvenssiin, jonka jokainen Linux-käyttäjä tunnistaa:

> usb 3-2: nollaa suurinopeuksinen USB-laite numero 2 xhci-hcd:llä  
> usb 3-2: laitteen kuvauksen luku/64, virhe -71  
> EXT4-fs varoitus (laite sda2): I/O-virhe kirjoitettaessa inodille ...

Tarkistussumma voi muuttua virheelliseksi, kun konfiguraatiotietoja kirjoitetaan uudelleen – esimerkiksi kun silta päivittää virranhallinta- tai UAS-asetuksiaan – ja laite menettää virran kesken kirjoituksen. Seuraava käynnistys havaitsee vioittuneen tarkistussumman ja palautuu pysyvästi ROM-laiteohjelmistoon.

Tässä vaiheessa "korkean suorituskyvyn NVMe-kotelosi" käyttäytyy täsmälleen kuin halvin nimettömä kotelo, koska se käyttää nyt sisäisesti samaa viallista peruskoodia, joka on poltettu piisiruun.

## Ongelman tarkistaminen

Voit vahvistaa tämän tilan helposti Linuxissa:

> lsusb -v | grep -A2 Realtek

Terve Realtek-siltta raportoi laiteohjelmiston version (**bcdDevice**) yli 1.00. Palautunut siltta näyttää:

> bcdDevice           f0.01

Tämä **f0.01**-allekirjoitus tarkoittaa, että ohjain käynnistyy ROM-muistista – eikä mikään määrä irtikytkentää, uudelleenformatointia tai ytimen säätöä korjaa sitä.

Tämä palautusmekanismi on **vahvistettu RTL9210:lle**. **RTL9220** vaikuttaa jakavan saman suunnitteluarkkitehtuurin ja laiteohjelmiston asettelun, joten se voi osoittaa identtistä käyttäytymistä, mutta tämä on **todennäköistä, ei todistettua**.

## Miksi et voi korjata sitä itse

Periaatteessa korjaus on yksinkertainen: uudelleenohjelmoi oikea laiteohjelmisto SPI-muistiin. Käytännössä Realtek tekee tämän mahdottomaksi.

Yritys tarjoaa suljetun lähdekoodin Windows-päivitysohjelman OEM-valmistajille ja integraattoreille. Linux-käyttäjille ei tarjota mitään. Yhteisön kehittäjät käänteisinsinööröivät yhteensopivia flash-työkaluja (**rtsupdater**, **rtl9210fw**, **rtsupdater-cli**), jotka mahdollistivat täydellisen laiteohjelmiston palauttamisen Linux-järjestelmistä – kunnes Realtek antoi **DMCA-poistopyyntöjä** niiden tukahduttamiseksi.

Ei ole uskottavaa immateriaalioikeudellista perustetta tällaisten työkalujen estämiselle: ne eivät paljasta mikrokoodia, vaan ainoastaan järjestävät päivityssekvenssin USB:n kautta. Realtekin poistot eivät liittyneet suojaamiseen. Ne olivat ideologisia.

## Ideologian hinta

Tämä ei koske avoimen lähdekoodin idealismia. Kyse on laitevalmistajan **ideologisesta vihamielisyydestä avoimia järjestelmiä kohtaan**, joka rikkoo laitteita, joita markkinoidaan *Linux-yhteensopivina*.

Realtekin vastustus dokumentaatiolle ja avoimille työkaluille on jatkunut kahden vuosikymmenen ajan kattaen Wi-Fi:n, Ethernetin, äänen ja nyt tallennusohjaimet. Tämä eristäytyminen saattaa jäädä huomaamatta pelkästään Windows-maailmassa, mutta se muuttuu myrkylliseksi, kun samat piirit integroidaan monialustaisiin tuotteisiin, kuten **Sabrent EC-SNVE**, joka avoimesti esittelee Linux-logoa pakkauksessaan.

Kieltämällä Linux-flash-työkalut ja estämällä yhteisön ylläpidon Realtek on tehokkaasti **kriminalisoinut itsekorjauksen**. Seuraukset leviävät ulospäin:

* Linux-käyttäjät näkevät "tuettujen" laitteiden rappeutuvan epävakauteen.
* OEM-valmistajat, kuten Sabrent ja Orico, kohtaavat tarpeettomia RMA- ja takuukustannuksia.
* Realtekin pitkäaikainen maine heikkona Linux-yhteensopivuuden suhteen vahvistuu jälleen.

Loppujen lopuksi ei ole avoin lähdekoodi, joka rikkoo Realtekin laitteita – se on **Realtekin vihamielisyys avointa lähdekoodia kohtaan**, joka rikkoo ne.

## Järkevä tie eteenpäin

Ratkaisu ei vaadi ideologista muutosta, vain pragmatismia. Realtek voisi:

1. Julkaista toimittajan allekirjoittama komentorivipäivitysohjelma Linuxille (ei tarvita lähdekoodin paljastamista).
2. Julkaista tarkistussumma-algoritmi, jotta integraattorit voivat turvallisesti validoida flash-kuvia.
3. Ottaa käyttöön DFU-tyylinen tila, joka hyväksyy päivitykset USB-massamuistin kautta käyttöjärjestelmästä riippumatta.

Jokainen näistä estäisi takuukustannukset, suojaisi OEM-suhteita ja palauttaisia luottamuksen Realtekin siltapiireihin ammattimaisten Linux-käyttäjien keskuudessa – työasemien rakentajista Raspberry Pi -kehittäjiin.

## Mitä voit tehdä

Jos epäilet, että kotelosi on palautunut ROM-laiteohjelmistoon:

* Tarkista komennolla **lsusb -v | grep bcdDevice**.
* Jos se näyttää **f0.01**, ilmoita ongelmasta OEM-valmistajallesi.
* Sisällytä **dmesg**-ote ja viittaa tähän dokumentoituun palautusmekanismiin.
* Pyydä toimittajaasi eskaloimaan ongelma Realtekille mainiten tarve Linux-yhteensopivalle päivitysohjelmalle.

Realtekin laiteohjelmistopolitiikka ei vain häiritse harrastajia; se aiheuttaa konkreettisia taloudellisia tappioita heidän omalle ekosysteemilleen. Mitä nopeammin tämä todellisuus tunnustetaan yrityksen sisällä, sitä nopeammin Linux-käyttäjät ja OEM-kumppanit voivat lopettaa ajan tuhlaamisen vältettävissä oleviin RMA-sykleihin.

## Valmistajien vastaukset

Sekä Realtek että Sabrent kutsuttiin antamaan lausuntoja yllä kuvattuun laiteohjelmiston palautusongelmaan liittyen. Heidän vastauksensa – jos ne vastaanotetaan – liitetään tähän.

## Liite – Vaikuttavien laitteiden tunnistaminen

| Ohjain     | Toimittajan ID | Tuotteen ID | Huomautukset                       | Tila                              |
|------------|---------------|-------------|-----------------------------------|-----------------------------------|
| RTL9210    | 0x0bda        | 0x9210      | USB 3.1 Gen 2 10 Gb/s silta       | **Vahvistettu** palautuskäyttäytyminen |
| RTL9220    | 0x0bda        | 0x9220      | USB 3.2 Gen 2×2 20 Gb/s silta     | **Mahdollinen**, samankaltainen arkkitehtuuri |

Laiteohjelmiston palautusallekirjoitus: **bcdDevice f0.01**  
Tunnetut vakaat versiot: **1.23** – **1.31**
