Table of Contents
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. |
</code>
