1

Temat: Komunikacja z kontrolerem wentylatorów USB z Linux-a

Znalazłem w sieci fajny projekt kontrolera wentylatorów 12V
Zamierzam go zbudować ale chciałbym zasięgnąć porady dotyczącej komunikacji przez USB.
Soft do obsługi napisany jest tylko po Windows-a ale:

Unfortunately Mac and Linux users are left out but there is some good news. The Fan Controller implements the CDC (Communication Device Class) protocol over USB and there is native support for this in Linux (the cdc-acm driver) and Apple OS/X.  The Fan Controller appears as a standard serial communications device to the operating system and the commands accepted by it are simple ASCII strings, so it would be easy to write your own software or use simple scripting to communicate with the controller.

Tutaj link z opisem protokołu komunikacji.

Może jakaś mądra głowa podpowie jak powinna wyglądać składnia w konsoli na wysyłanie poleceń i odbieranie tych cosekundowych informacji?

APU2 @ OpenWrt 18.06-SNAPSHOT, r7852-7ac6044632

2

Odp: Komunikacja z kontrolerem wentylatorów USB z Linux-a

Zwykle dane tekstowe wysyłane przez port szeregowy.

Po linuksem:

echo -e "FCQ\r\n" > /dev/ttyACM0 && grep -m1 "FCR" /dev/ttyACM0

i podobne kombinacje. Możesz sobie napisać dowolne skrypty jak chcesz, w shellu, w php, pythonie czy perlu, do wszystkiego znajdziesz jakieś biblioteki do obsługi portu szeregowego. Nawet w C możesz sobie napisać, pewnie program nie przekroczy nawet jednego ekranu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Komunikacja z kontrolerem wentylatorów USB z Linux-a

Dziękuję @Cezary za naprowadzenie.
Jak ogarnę PCB, części i polutuje układ to dam znać co z tego wyszło smile

APU2 @ OpenWrt 18.06-SNAPSHOT, r7852-7ac6044632

4 (edytowany przez Graffy 2018-02-22 09:46:32)

Odp: Komunikacja z kontrolerem wentylatorów USB z Linux-a

Układ działa, pierwsze testy pod Linux-em

Odczyt RMP i temperatury działa

root@omv /root % cat /dev/ttyACM0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3090,0,780,0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3090,0,810,0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3060,0,780,0
...

Niestety składnia, którą podałeś nie działa

root@omv /root % echo -e "FCQ\r\n" > /dev/ttyACM0 && grep -m1 "FCR" /dev/ttyACM0
Binary file /dev/ttyACM0 matches

Jeśli połączę się dwoma terminalami i w jednym wydam polecenie odczytu konfiguracji to w drugim wypluwa poprawnie.

root@omv /root % echo -e "FCQ\r\n" > /dev/ttyACM0

root@omv /root % cat /dev/ttyACM0                                    
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3090,0,810,0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3090,0,780,0
FCR,0,1,0,0,0,7,30,50,0,0,0,0,7,30,50,0,0,0,10,1,40,60,0,3,0,20,7,30,50,0,3,0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3060,0,810,0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3090,0,780,0
...

@Cezary masz pomysł jak to ożenić, żeby wyłuskać dane?
"grep" coś nie działa

root@omv /root % cat /dev/ttyACM0 | grep "FCD"
Binary file (standard input) matches

------------------------------------------------------------------------------------------------------

Nie było pytania, poradziłem sobie smile

root@omv /root % echo -e "FCQ\r\n" > /dev/ttyACM0 && grep -zm1 "FCR" /dev/ttyACM0
FCR,0,1,0,0,0,7,30,50,0,0,0,0,7,30,50,0,0,0,10,1,40,60,0,3,0,20,7,30,50,0,3,0

root@omv /root % grep -zm1 "FCD" /dev/ttyACM0
FCD,127,41,127,127,0,0,14,20,0,0,0,0,3060,0,810,0

Dziękuję @Cezary za naprowadzenie.

APU2 @ OpenWrt 18.06-SNAPSHOT, r7852-7ac6044632

5 (edytowany przez Cezary 2018-02-22 10:04:06)

Odp: Komunikacja z kontrolerem wentylatorów USB z Linux-a

Oczywiście że działa, przecież ci to napisał. Inna sprawa że traktuje to jako dane binarne więc zainstaluj sobie pełną wersję grep (pakiet grep) i dodaj przełącznik -a. Wersja z busyboxa tego nie ma.  Nie czytasz dokumentacji.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.