De Pi 4 USB-C aansluiting werkt soms niet met een USB-C kabel om hem van stroom te voorzien. Dat komt door een fout in de eerste generatie. Hoe komt het dat de Raspberry Pi geen stroom krijgt en wat kun je er aan doen? En hoe herken je of jouw Raspberry Pi 4 van de eerste generatie is?
Dat de Pi 4 USB-C kabel geen stroom kan leveren komt door een fout in de elektronische schakeling. Hoe dat precies zit lees je verderop, maar eerst de oplossing.
De eenvoudigste oplossing voor de bezitters van een Raspberry Pi 4 is om een ‘domme’ USB-C-kabel zonder SOP-chips te gebruiken – gelukkig zijn dat meestal de goedkoopste, die kosten namelijk minder dan 10 euro. Of je kunt een Raspberry Pi 4 kopen uit de nieuwe productieserie die al sinds februari 2020 te koop is.
Helaas is in de nieuwe serie niets aan de opdruk of de modelnaam veranderd, zodat het praktisch onmogelijk is om vóór de aankoop te controleren of een aanbieder nog Raspberry Pi’s van de eerste productieserie levert of dat het om het verbeterde model gaat. Heb je al een Pi 4, dan kun je het aan de printplaat zien. Bij de nieuwe productieserie is een transistor anders op de printplaat geplaatst. Op de afbeelding hieronder zie je boven een oude Raspberry Pi 4 en onder een van de nieuwe serie ter vergelijking.
Zelf de USB-C-aansluiting aanpassen bij de eerste generatie is een andere oplossing voor handige hobbyisten. Als je de juiste CC-pin van de USB-C-aansluiting (rechtsboven op de foto hieronder) losmaakt en van een eigen weerstand voorziet, kun je elke USB-C-kabel gebruiken. Zonder die aanpassing zullen alleen goedkope kabels zonder SOP-chips werken. Dit is echter een klus voor gevorderden, die we in detail beschrijven in c’t magazine, uitgave juli-augustus 2020.
De Pi 4 USB-C aansluiting
Omdat USB-C-stekkers geen boven- of onderkant hebben, zitten alle signaalcontacten er dubbel op – eenmaal aan de boven- en eenmaal aan de onderkant van de contactstrip. Om ervoor te zorgen dat het USB 2.0-datakanaal in alle richtingen werkt, hebben de ontwikkelaars van de Raspberry Pi de pinnen D+ en D- van de bovenste en onderste contacten met elkaar verbonden.
Ook de pinnen voor de voeding zijn met elkaar verbonden op de USB-C-aansluiting. Die heeft daar vier pinnen voor, want via USB-C kan tot 100 watt vermogen worden overgedragen. De vier contacten verminderen de weerstand en de stroombelasting van de individuele contacten. De maximale spanning en stroom die een USB-C-apparaat kan krijgen, wordt bepaald via het configuration-channel, dat uit een enkele lijn bestaat.
Bij een spanning van 5 volt tot maximaal 3 ampère verloopt de codering met behulp van een eenvoudige weerstand tussen het configuration-channel (CC-lijn) en de massa. Voor hogere spanningen of stromen, tot 20 volt bij 5 ampère, moet het apparaat met de voeding communiceren via een seriële dataverbinding met behulp van het SOP-protocol (Start Of Packet). De dataoverdracht verloopt dan via het configuration-channel.
Pi 4 USB-C bug
Om een USB-C-voedingseenheid in staat te stellen de Raspberry Pi 4 van maximaal 3 ampère te voorzien, hebben de Pi-ontwikkelaars de benodigde weerstand van 5,1 kOhm tussen de CC-lijn en de massa gesoldeerd. Bij USB-C-kabels is de CC-lijn echter slechts op één van de twee CC-pinnen van de USB-C-stekker aangesloten, de andere pin is niet toegewezen. Dat maakt het makkelijk voor de voeding en het USB-C-apparaat om te bepalen hoe de USB-C-kabel aangesloten is. Om ervoor te zorgen dat de CC-lijn op de weerstand wordt aangesloten, zelfs als de kabel ondersteboven aangesloten wordt, hebben de ontwikkelaars de CC-pinnen van de bovenste onderste strip met elkaar verbonden – vergelijkbaar met de datalijn van een USB 2.0-verbinding.
Ze zijn blijkbaar echter vergeten dat er ook zogenaamde intelligente USB-C-kabels (‘electronically marked cables’) zijn, waarin elke connector ook nog voorzien is van een SOP-chip. Naast informatie over de voeding geven die chips soms ook een identificatie- of serienummer van de fabrikant door, waardoor apparaten onderscheid kunnen maken tussen originele kabels en imitatiekabels. In dat geval wordt echter de tweede CC-pin in de connector gebruikt om de SOP-chip van stroom te voorzien. De chip geeft de gegevens dan door via de CC-lijn. Om ervoor te zorgen dat een USB-C-voeding of apparaat een intelligente kabel van een domme kabel kan onderscheiden, heeft elke connector een gedefinieerde weerstand tussen de tweede CC-pin en de massa.
Door de koppeling van de twee CC-pinnen op de Pi 4-aansluiting is de weerstandswaarde voor het detecteren van een USB-C-apparaat niet meer correct voor intelligente USB-C-kabels. Bovendien kan de SOP-chip van een dergelijke kabel geen gegevens doorsturen, zodat de Pi effectief wordt geclassificeerd als een passieve usb-hoofdtelefoonadapter en de voeding wordt uitgeschakeld. Daarom worden in de referentie-implementaties steeds twee weerstanden gebruikt om de twee CC-pinnen afzonderlijk te aarden.
Meer mogelijkheden van de USB-C aansluiting
Met een goed werkende USB-C aansluiting kan een Pi 4 ook fungeren als usb-stick of als ethernetadapter voor andere apparaten die je erop aansluit. Je kunt hem bijvoorbeeld via USB-C aansluiten op een mobiel apparaat zoals de Apple iPad Pro, die hem tegelijkertijd van stroom kan voorzien. De Pi kan dan ook als netwerkapparaat, als seriële interface, invoerapparaat of usb-opslagmedium functioneren. Hoe dat werkt en hoe je het instelt lees je in c’t magazine, uitgave juli-augustus 2020.
(Informatie afkomstig uit het artikel van Thomas Koch, Mirko Dölle en Noud van Kruysbergen, c’t magazine 7-8/2020, p. 62)