|
Wie die Hardware (Schaltplan, Leiterplatte) gleicht auch die Firmware im PIC-Prozessor in weiten Teilen dem USB4all-Original.
Die Unterschiede gegenüber dem Originial-Sourcecode sind in dieser
Datei als Diff-Ergebnis zusammengefasst:
usb4all_webcam_cdc_9.diff.txt
Die Differenzen können direkt in den Original-Quellcode (cdc_9) gepatcht werden.
Das Compilieren aus dem Quellcode ist allerdings mit einigen Tücken versehen. Insofern ist es einfacher, ein fertiges Image in den PIC zu brennen.
Dafür dient die folgende Datei: usb4all_cdc_9_18f2553.hex
Diese kann mit einem PIC-Brenner (z.B.
diesem)
direkt in den Prozessor programmiert werden.
Der wesentliche Unterschied zum Original liegt in der Bedienung des Watchdog-Timers.
Wird der Watchdog etwa 10 Minuten lang nicht von der Software aktualisiert, so wird über ein Relais der Kamerarechner aus/eingeschaltet und macht damit einen Reset.
Zum Aktualisieren wird das Kommando 0x64 verwendet. Es enthält folgende Varianten:
64 00 - Aktualisieren des Watchdogtimers. Reset wird für 10 Minuten verzögert.
64 01 - Reset augenblicklich auslösen. Der Kamerarechner wird aus/eingeschaltet.
Alle anderen Kommandos verhalten sich wie in der oben genannten Dokumentation beschrieben.
Um unter OpenWRT das USB4all-Webcam-Modul bequem anzusprechen ist das nachfolgende Programm hilfreich. Der Quellcode ist unter usb4all-webcam-client.tgz herunterzuladen. Es ist ein Makefile als OpenWRT-Package enthalten.
Eine compilierte Version für Asus-WL500GPv2 befindet sich im Download-Archiv. Ein fertiges Paket für ar71xx-Architektur TL-MR3020 gibts hier, im vorgefertigten Firmware-Image ist die Datei bereits enthalten.
Beim Aufruf gibt das Programm folgende Hilfe von sich:
Usage: usb4all [ -v ] [ -r <vref> ] <hexcode> | <cmd> -v - debug output on cooked commands -r <millivolt> - set reference (0=internal default:4096) wd - trigger watchdog (avoid resetting host power) reset - immediate reboot (switch host power off/on) a - read A/D ports and calculate voltage and temperature d - read digital ports con - camera on (B6) coff - camera off (B6) hon - heater on (B5) hoff - heater off (B5)
Es ist in erster Linie zur Verwendung in Skripten gedacht.
Beim Auslesen der Analogwerte wird davon ausgegangen, dass LM335-Temperatursensoren an den Analogeingängen angeschlossen sind. Für diesen Fall gibt das Programm bereits die berechneten Temperaturen in °C aus.
Bei Unklarheiten über die Funktion hilft ein Blick in den Sourcecode des Programms und in die originale USB4all Dokumentation.
Damit das Programm unter OpenWRT lauffähig ist, ist auch das Paket kmod-usb-acm erforderlich, das den USB-Serial Treiber für den PIC zur Verfügung stellt.