====== Junsi iCharger 4010Duo - Linux Setup Guide (Debian/LMDE) ======
Diese Dokumentation beschreibt die Einrichtung und Fehlerbehebung für den Zugriff auf Junsi iCharger Hardware unter Linux (getestet mit LMDE 7). Da der iCharger ein Composite-Gerät ist, wird der Zugriff über **PyUSB** anstelle von hidapi durchgeführt.
===== 1. System-Voraussetzungen =====
Zuerst müssen die notwendigen System-Bibliotheken für die USB-Kommunikation und die Python-Umgebung installiert werden:
sudo apt update
sudo apt install libusb-1.0-0 libusb-1.0-0-dev python3-venv
Innerhalb der virtuellen Umgebung (venv) des Projekts muss PyUSB installiert sein:
pip install pyusb
===== 2. USB-Architektur des iChargers =====
Der iCharger meldet sich am USB-Bus als **Composite Device** mit zwei Schnittstellen:
* [cite_start]**Interface 0 (HID):** Zuständig für die Datenübertragung (Modbus via HID). [cite: 178, 179]
* [cite_start]**Interface 1 (Mass Storage):** Stellt die SD-Karte als Laufwerk bereit. [cite: 140]
===== 3. udev-Regeln konfigurieren =====
Um den Zugriff für Nicht-Root-Benutzer zu erlauben, muss eine udev-Regel angelegt werden. Diese sorgt dafür, dass die Gerätedatei unter ''/dev/bus/usb/'' die richtigen Rechte erhält.
Erstellen Sie die Datei ''/etc/udev/rules.d/99-junsi.rules'':
# Junsi iCharger 4010Duo - VID:0483 PID:5751
# 1. Erlaubt Schreib-/Leserechte für die Gruppe plugdev
# 2. Weist uaccess zu, um dem aktuellen User direkten Zugriff zu gewähren
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="5751", MODE="0666", GROUP="plugdev", TAG+="uaccess"
Aktivieren Sie die Regeln:
sudo udevadm control --reload-rules
sudo udevadm trigger
===== 4. Diagnose-Verfahren =====
Sollte das Gerät nicht erkannt werden, prüfen Sie die folgenden Punkte:
==== A. Kernel-Treiber Check ====
Prüfen Sie, ob ein Treiber das Interface blockiert:
lsusb -t
Achten Sie auf die Zeile für den iCharger. Wenn dort ''Driver=usbhid'' steht, muss der Treiber im Python-Code via ''detach_kernel_driver()'' gelöst werden.
==== B. Rechte-Check ====
Suchen Sie Bus und Device Nummer:
lsusb | grep 0483
Prüfen Sie dann die Rechte (Beispiel für Bus 002, Device 016):
ls -l /dev/bus/usb/002/016
**Soll-Ergebnis:** ''crw-rw-rw-'' oder ''crw-rw----+'' (ACL).
==== C. Live-Monitor ====
Beobachten Sie das System beim Einstecken des Geräts:
udevadm monitor --environment --udev
Achten Sie darauf, ob die Zeile ''TAGS=:uaccess:seat:'' erscheint.
===== 5. Integration im Framework =====
[cite_start]Der Transport nutzt das Modbus-Protokoll über HID-Reports. [cite: 418, 420]
* [cite_start]**Anfrage:** Paket wird in einen 64-Byte Report verpackt. [cite: 418, 419]
* [cite_start]**Antwort:** Der Lader antwortet mit Function Codes wie 0x03 oder 0x04. [cite: 184, 203]
===== 6. Troubleshooting =====
| Fehler | Ursache | Lösung |
|---|---|---|
| ''Access Denied'' | udev Regel nicht aktiv | udevadm trigger ausführen & neu einstecken. |
| ''Resource Busy'' | Interface 1 (SD-Karte) wird gerade gemountet | SD-Karte entfernen oder kurz warten. |
| ''open failed'' | Kernel-Treiber (usbhid) blockiert | Sicherstellen, dass der Transport ''claim_interface'' nutzt. |