Wszystkie wymagane pliki są dostępne w katalogu /home/osboxes/opel, natomiast wszystkie narzędzia są tekstowe, a więc wszystko wykonujemy z terminala.
Jeśli jednak chcesz sam przygotować sobie system, zakładam, że wiesz jak go skonfigurować:
instalujemy python3.4+
instalujemy can-utils (apt-get install can-utils)
instalujemy pip (apt-get install python3-pip)
instalujemy pyserial oraz python-can (pip3 install pyserial && pip3 install python-can)
W innych systemach niż Debian/Ubuntu polecenia mogą być inne.
Pierwszym krokiem do zrobienia jest uruchomienie vcan_init, który stworzy wirtualne interfejsy (LSCAN, MSCAN, HSCAN) w Linuxie. Będą one używane do dostępu do fizycznych CANów w samochodzie.
a więc logujemy się w systemie, uruchamiamy terminal, przechodzimy do katalogu opel (cd opel) i wpisujemy:
sudo ./vcan_init
potwierdzamy hasłem roota (lwpm)
W tym momencie mamy już utworzone wirtualne interfejsy CAN, z których już teraz możemy korzystać.
Następnym krokiem jest podłączenie do maszyny wirtualnej interfejsu OP-COMa i podpięcie go pod któryś z CANów. Służy do tego program opcom.py, który uruchamiamy następująco:
./opcom.py /dev/ttyUSB0 lscan
aby połączyć interfejs OP-COMa z naszym wirtualnym CANem (LSCAN)
aby podłaczyć się do mscan wpisujemy odpowiednio
./opcom.py /dev/ttyUSB0 mscan
analogicznie robimy to dla HSCAN
./opcom.py /dev/ttyUSB0 hscan
W przypadku HSCAN OP-COM bardzo szybko się zawiesi ze względu na zbyt dużą ilość danych, których nie jest on w stanie przetworzyć, dlatego wywołujemy program z odpowiednim filtrowaniem przychodzących pakietów, np:
./opcom.py /dev/ttyUSB0 hscan filter:-1,-1,7DF,7E0,5E8,7E8
w ten sposób będziemy przechwytywać tylko komunikację ze sterownikiem silnika (ECU)
Pierwsze dwa parametry filtru to maska bitowa. Nie końca wiem jak jej używać, dlatego używamy -1,-1, aby odfiltrować wszystko, natomiast kolejne wartości to już konkretne identyfikatory PIDów, które potrzebujemy. Możemy podać maksymalnie 6 identyfikatorów!
Skoro mamy już połączony samochód z naszym komputerem, możemy podejrzeć co się w nim dzieje :)
najważniejsze polecenia to cansniffer oraz candump
candump lscan
cansniffer lscan
pierwszy z nich wypisuje na ekranie wszystkie przychodzące pakiety, natomiast drugi robi dokładnie to samo, z tym, że grupuje je wg identyfikatora pokazując tylko to co się zmieniło. Warto poczytać pomoc do tych poleceń, aby uzyskać lepszą prezentację danych (użyj parametru –help).
Najważniejsze wywołania to:
candump -a -c lscan
candump -l lscan
Pierwszy wypisuje pakiety w kolorze i pokazując zawarte w nich teksty
drugi zapisuje wszystkie pobranie pakiety do pliku np w celu dalszej ich analizy
Do wysyłania pakietów na CAN mamy w zasadzie dwa najważniejsze programy: cansend oraz canplayer Za pomocą canplayer możemy wysłać na CAN poprzednio zapisane pakiety,
natomiast za pomocą candump możemy wysłać konkretny pakiet na CAN, np:
cansend mscan 223#00772823
polecenie to wyśle pakiet o identyfikatorze 223 i długości 4 bajtów na MSCAN.
w załącznikach programy vcan_init, opcom.py oraz instrukcja instalacji przygotowana przez Łukasza Ostapiuk