USB != USB

Bei einem Nicht-hobbyelektronik.org-Projekt habe ich mit einem Mikrocontroller mit USB-Controller zu tun.

Nachdem das Projekt pausiert war, wollte ich mich nun wieder damit beschäftigen. Da meine beiden Monitore USB-Hubs haben und diese auch mit dem PC verbunden sind, war naheliegend, das Device auch daran zu betreiben. Mit unveränderter Firmware und (nur nach Visual Studio 2010) konvertierten Software tickte das Teil ohne Probleme – zumindest einige Sekunden. Zunächst habe ich ein Timing-Problem vermutet, da ich die Hardware mit knapp 50Hz gepollt wird und die Firmware noch nicht optimiert ist, dem war aber nicht so. Auch mit 10Hz und weniger blieb die Verbindung stehen. Die C#-Software blieb beim Schreiben auf das Device einfach stehen, genauso lief die Firmware (außer Interrupt-Behandlungen).

Was ist da los? Die Ursache ist sehr einfach: Der Monitor ist schuld. Anscheinend ist der USB-Hub in meinem NEC LCD2170NX nicht so ganz standardkonform. Zumindest war dieser für die Ausfälle verantwortlich. Am Hub der deutlich billigeren FSC-Möhre (die etwas aktueller ist) funktioniert das Teil tadellos.

Genauso wollen Bus-powered Festplatten an manchen USB-Kabeln einfach nicht funktionieren (vermutlich zu großer Innenwiderstand in den Versorgungsleitungen).

Sowas muss man einfach wissen oder zumindest einmal darauf reinfallen.