USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Die benötigte Hardware zum Nachbau. Bitte hier nur Hardware posten, die man auch selber ausprobiert hat. Nichts posten, nur weil es neu ist.

Moderator: Ulrich

Forumsregeln
Bitte nur Hardware posten, die man selber auch ausprobiert bzw. in Verwendung hat.
Antworten
homepvtech
Beiträge: 12
Registriert: Mo 22. Mai 2023, 19:52
Danksagung erhalten: 1 Mal

USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von homepvtech »

Hi, trotz vielem mitlesen und suchen, muss ich diese Fragen jetzt loswerden, da es mich nicht loslässt.

Warum genau wird bei RS485 nur ein USB Stick mit FTDI Chip unterstützt?
War ist der technische Grund?

Ich kann mir aktuell nur vorstellen, dass der PHP Code einfach kein ACM Device öffnen kann, weil es im Code nicht vorgesehen ist.
Die Funktion openUSB() sieht halt einfach anders aus, als wenn man ein ttyACM öffnen würde.

Als Beispiel ein USB RS485 Adapter mit CH343G Chipsatz.
Am Windows PC funktioniert dieser tadellos als COM Port zum Growatt MIC Wechselrichter.

Am Linux Treiber kann es nicht liegen, denn den 'cdc_acm' bringt das Raspberry OS Solaranzeige Image schon mit.

Ist meine Annahme soweit richtig?
Müsste also eventuell nur jemand eine entsprechende openACM() mit notfalls weiteren Änderungen bereitstellen?

Benutzeravatar
Ulrich
Administrator
Beiträge: 5557
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 154 Mal
Danksagung erhalten: 884 Mal
Kontaktdaten:

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von Ulrich »

Die FTDI Chipsätze werden hier gefordert, da der Treiber im Raspberry Bullseye enthalten und die Funktion getestet ist. Experten können jeden anderen Adapter benutzen, wenn sie den richtigen Treiber installieren und die richtigen Einstellungen kennen. Der überwiegende Teil der Mitglieder hat die Linux Kenntnisse jedoch nicht, deshalb der Hinweis auf den FTDI Chipsatz.

Der ttyACM wird von PHP genauso unterstützt, wenn der richtige Treiber vorhanden ist. Regler Nummer 1 benutzt zum Beispiel die ttyACM Device.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

homepvtech
Beiträge: 12
Registriert: Mo 22. Mai 2023, 19:52
Danksagung erhalten: 1 Mal

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von homepvtech »

Ja ok, für die letzte Denkschleife war es gestern dann doch zu spät.
Das hat natürlich nichts mit der PHP Funktion zu tun, sondern mit dem Treiber, denn der 'cdc_acm' kann das (mit diesem Chipsatz) einfach nicht.

Und siehe da, kaum macht man es richtig, also kompiliert und installiert man sich den passenden Treiber, klappt es auch wie erwartet mit einem nicht FTDI Chip.
Und ja, in diesem Fall ist Expertenwissen nötig, denn der Treiber vom Chip Hersteller WCH ist total Buggy!

Mit dem aktuellen Kernel 6.1.21-v8+ knallt's gleich mal im make und im Github issue #20 https://github.com/WCHSoftGroup/ch343se ... /issues/20 findet sich ein anderer User, der das in seinem Fork behoben hat. Der Hersteller hat es nicht im Repo.

Also nehmen wir diesen Fork: https://github.com/FirstLoveLife/ch343
Jedoch ist dann zumindest bei mir immer noch das Device nicht korrekt angezeigt, geschweige denn angesprochen worden und das lag an diesem Pull Request, der bisher auch nicht übernommen wurde: https://github.com/WCHSoftGroup/ch343ser_linux/pull/15
Also benennen wir das Device ttyCH343USB in ttyUSB um

Diese Schritte habe ich gemacht zur Treiber Installation

Code: Alles auswählen

git clone https://github.com/WCHSoftGroup/ch343ser_linux
sudo apt-get install raspberrypi-kernel-headers
cd ch343ser_linux/driver
sed -i 's/ttyUSB/ttyCH343USB/g' ch343.c
make
sudo make install
reboot
tl;dr: download / fix&correct / install CH343 driver / reboot / it's working

Finally genau so soll es laufen unter verwendung des Driver 'usb_ch343':

Code: Alles auswählen

06.06. 21:37:51    -USB Devices:
array (
  1 =>
  array (
    'Device' => '0x55d3',
    'File' => '/dev/ttyUSB0',
    'Vendor' => 'usb 0x1a86 "QinHeng Electronics"',
    'Model' => 'QinHeng Electronics USB Single Serial',
    'Driver Modules' => 'ch343',
    'Driver' => 'usb_ch343',
  ),
  2 =>
  array (
    'Device' => '0x0003',
  ),
)

06.06. 21:39:13 |-------------------------   Start  growatt.php   ---------------------
06.06. 21:39:13    -Protokoll Version: 2
06.06. 21:39:16    -Firmware: GH1.0  Warnungen: 00000000
06.06. 21:39:16    -Auslesen des Gerätes beendet.
06.06. 21:39:16 *  -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
06.06. 21:40:09    -OK. Datenübertragung erfolgreich.
06.06. 21:40:09 |-------------------------   Stop   growatt.php   ---------------------

homepvtech
Beiträge: 12
Registriert: Mo 22. Mai 2023, 19:52
Danksagung erhalten: 1 Mal

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von homepvtech »

@Ulrich würde es Sinn machen, diesen Treiber mit in das Image aufzunehmen?
Damit sind auch gleich eine Reihe von Chips der Baureihe CH34x abgedeckt und weitere User könnten Stressfreier loslegen.

Benutzeravatar
mr.big
Beiträge: 483
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 10 Mal
Danksagung erhalten: 100 Mal

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von mr.big »

stressfrei bis zum nächsten Kernelupdate!?

Benutzeravatar
Ulrich
Administrator
Beiträge: 5557
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 154 Mal
Danksagung erhalten: 884 Mal
Kontaktdaten:

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von Ulrich »

homepvtech hat geschrieben:
Do 8. Jun 2023, 19:18
@Ulrich würde es Sinn machen, diesen Treiber mit in das Image aufzunehmen?
Damit sind auch gleich eine Reihe von Chips der Baureihe CH34x abgedeckt und weitere User könnten Stressfreier loslegen.
Ich werde mir das einmal genauer ansehen, sobald ich Zeit habe.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

homepvtech
Beiträge: 12
Registriert: Mo 22. Mai 2023, 19:52
Danksagung erhalten: 1 Mal

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von homepvtech »

mr.big hat geschrieben:
Do 8. Jun 2023, 19:25
stressfrei bis zum nächsten Kernelupdate!?
Ich hab nicht gesagt, das es ein Selbstläufer ist. ;)

homepvtech
Beiträge: 12
Registriert: Mo 22. Mai 2023, 19:52
Danksagung erhalten: 1 Mal

Re: USB RS485 Stick: warum nur FTDI Chip und als ttyUSB und kein ttyACM Device?

Beitrag von homepvtech »

Jetzt ist auch mein Hobbyprojekt etwas größer geworden und ich habe die Solaranzeige in den Mutli-Regler Modus versetzt.

Ende vom Lied: Der Waveshare Stick mit ch343 Chip war in der Single Regler Version ganz ok und hat zuverlässig gearbeitet.

Der selbst kompilierte ch343 Treiber belegt aber immer ttyUSB0 und ein weiterer Adapter, dieses mal mit FTDI Chip, konnte nicht eingebunden werden.

Code: Alles auswählen

"ftdi_sio: probe of ttyUSB0 failed with error -17"
Jetzt sind zwei Adapter mit FTDI Chip am Start und es funktioniert wie erwartet.

Mal gucken, ob ich dem ch343 Treiber beibringen kann, nicht die ttyUSB** zu blockieren. Aber sonst ist das Ding hat nur noch für den Laptop.

Antworten

Zurück zu „Hardware für den Nachbau“