Hallo allerseits,
ich habe (endlich mal...) ein kleines Werkzeug gebaut, mit dem man die Firmware von internen USB-iSights, die ihre Vendor/Device-ID verloren haben, ins RAM des verwendeten ezUSB-Controllers laden kann.
Der Effekt scheint vereinzelt bei älteren iMacs aufzutreten, die beim SMC-Reset Probleme haben oder bei denen im Betrieb der Strom ausgefallen ist. Ich hab so einen hier (weißer 17" Core2Duo). Der Effekt ist, dass sich der iSight-interne ezUSB-Controller nicht mehr als iSight meldet, sondern mit VendorID 0x04b4 und DeviceID 0x8613. Was genau bei diesen iSights hinüber ist, ist mir noch nicht ganz klar - entweder ist das Firmware-EEPROM des iSight-Controllers hinüber oder der Controller steckt in einem Firmware-Laden-Zustand fest.
Mein Werkzeug (aktuell auf der Kommandozeile) lädt nun die aus dem AppleUSBVideoSupport-Treiber extrahierbare Firmware ins RAM der iSight. Abgeleitet ist das Werkzeug von Linux-basierten Tools, die iSight-Firmware laden, um mit den Linux UVC-Treibern zu funktionieren (aber mit IOKit-Aufrufen statt libusb). Das ganze funktioniert soweit wunderbar, muss aber bei jedem "Kaltstart" neu ausgeführt werden, da die Firmware eben im RAM des Controllers ist.
Soweit kein Problem - was ich mich aber nun frage ist, wie das Ganze benutzerfreundlich ablaufen kann. Im Moment stell ich mir eine Preference Pane vor, in der der Benutzer den Ort der Firmware-Datei angeben kann, das Laden der Firmware beim Booten aktivieren kann und die Firmware direkt laden kann. Das eigentliche Laden würde dann durch einen LaunchAgent realisiert.
Haltet ihr das für einen sinnvollen Ansatz oder gibt es da bessere Wege?
-- Michael
PS: die erste, recht zusammengehackte, Version des Werkzeugs habe ich mal unter multicores.org/loadFWcmdline.tar.gz abgelegt.
ich habe (endlich mal...) ein kleines Werkzeug gebaut, mit dem man die Firmware von internen USB-iSights, die ihre Vendor/Device-ID verloren haben, ins RAM des verwendeten ezUSB-Controllers laden kann.
Der Effekt scheint vereinzelt bei älteren iMacs aufzutreten, die beim SMC-Reset Probleme haben oder bei denen im Betrieb der Strom ausgefallen ist. Ich hab so einen hier (weißer 17" Core2Duo). Der Effekt ist, dass sich der iSight-interne ezUSB-Controller nicht mehr als iSight meldet, sondern mit VendorID 0x04b4 und DeviceID 0x8613. Was genau bei diesen iSights hinüber ist, ist mir noch nicht ganz klar - entweder ist das Firmware-EEPROM des iSight-Controllers hinüber oder der Controller steckt in einem Firmware-Laden-Zustand fest.
Mein Werkzeug (aktuell auf der Kommandozeile) lädt nun die aus dem AppleUSBVideoSupport-Treiber extrahierbare Firmware ins RAM der iSight. Abgeleitet ist das Werkzeug von Linux-basierten Tools, die iSight-Firmware laden, um mit den Linux UVC-Treibern zu funktionieren (aber mit IOKit-Aufrufen statt libusb). Das ganze funktioniert soweit wunderbar, muss aber bei jedem "Kaltstart" neu ausgeführt werden, da die Firmware eben im RAM des Controllers ist.
Soweit kein Problem - was ich mich aber nun frage ist, wie das Ganze benutzerfreundlich ablaufen kann. Im Moment stell ich mir eine Preference Pane vor, in der der Benutzer den Ort der Firmware-Datei angeben kann, das Laden der Firmware beim Booten aktivieren kann und die Firmware direkt laden kann. Das eigentliche Laden würde dann durch einen LaunchAgent realisiert.
Haltet ihr das für einen sinnvollen Ansatz oder gibt es da bessere Wege?
-- Michael
PS: die erste, recht zusammengehackte, Version des Werkzeugs habe ich mal unter multicores.org/loadFWcmdline.tar.gz abgelegt.
zumindest so ein paar hundert mal...