Tesla USB Dashcam Schritt für Schritt erklärt

Moin heute mal Schritt für Schritt wie man sich TeslaUSB einrichtet:

Ich hatte ja schon mal unter Autoupload Tesla Dashcam mit Raspi Zero W erklärt, dass es eine Möglichkeit ghibt eine Raspberry PI als Dashcam Speicher zu nutzer der dann automatisiert die Clips auf Euren Heimserver hochlädt. Hier nun die Schritt für Schritt Anleitung.


Vorraussetzungen:

  • RaspiPi Zero, wegen Stromververbrauch und USB Karten similution. PI4 geht auch der wird dann USB-C angeschlossen - deutlich schnellere Übertragung aber auch Faktoren höherer Stromverbrauch/Wärmeentwicklung. Aber ansonsten von der Konfig her hier komplett dasselbe.
  • SD Karte: Ich habe jetzt eine 512GB SD genommen damit etwas mehr als nur ein Tag gespeicher werden kann
  • SD Karten Adapter um diese im Rechner bearbeiten zu können
  • Etcher oder ähnliche SW um das Image auf eine SD Karte zu bringen
  • WLAN daheim oder HotSpot im Auto - Vorsicht Datenmengen können in Terrabytes gehen
  • Man muss Basiswissen auf der Shell haben bisserl Linuxkenntnisse
  • ASCII Editor z.B. Notepad++

Nun zum Vorgehen:

Die nächsten Schritte direkt mit der SD Karte im Rechner (z.B. mit USB Adapter)

Als erstes das aktuelle Image herunterladen. AKtueller Stand 2.0 Beta: https://github.com/marcone/teslausb/releases/tag/v2.0-beta. Die zip Datei entpacken und dann dieses mt Etcher oder ähnlichen Tools auf die SD Karte bringen.

Image auf die SD Karte bringen (mit Etcher)


512GB sind groß ja, aber weiter machen...


Die SD Karte nun kurz aus dem Slot nehmen und wieder einsetzen. Es erscheint ein BOOT Laufwerk. Nun muss man dort die Datei teslausb_setup_variables.conf erstellen. Dazu die sample kopieren und umbenennen (das .sample entfernen, das kann man unter windows machen) und den Inhalt so ändern, dass er zu den eigenen Bedürfnissen passt. Um sicher zu sein, dass Ihr immer die neueste sample Datei habt könnt Ihr diese auch unter https://github.com/marcone/tes…tup_variables.conf.sample herunterladen. Solange Ihr immer das neueste Release nutzt sollte diese kompatibel sein.


Editieren der conf datei mit z.b. Notepad++


Das Konfigfile ist eigentlich in der Datei gut kommentiert - lest die Datei einfach mal durch. Meine Änderungen sind z.B.

Code
# Change this! The setup script will not accept the default 'password'
export TESLAUSB_HOSTNAME=teslausbm3
export INCREASE_ROOT_SIZE=2G
export timezone="Europe/Berlin"
export archivedelay=60

Auch verwende ich kein CIFS (windows samba shares) sondern SSH zum übertragen der dashcam Dateien. Paar Kommentare zur Konfig:

  • Ich habe aktuell das WIFI vom RASPI mit Absicht aus um keine Sicherheitslücken zu erzeugen.
  • Den Hostnamen etwas gekürzt
  • Die Rootpartitaion auf 2G vergrößert falls ich später noch SW nachinstallieren möchte
  • Die Tesla account daten hinterlege ich NICHT, da Sicherheit und ich keine weitere (Fehler)Quelle, die das Auto alive hält
  • Zeitzone angepasst
  • Delay bis der Raspi mit der Synchonisierung startet auf 60s erhöht

Bzgl. Dateiübertragung und den exportwerten hier mal die Links auf die wichtigsten Dokumentationen:

  • Windows Samba / CIFS (nutze ich aus Sicherheitsgründen nicht {meine Windows-Share-Server sind nicht via WLAN erreichbar})
  • SSH / RSYNC (der Schlüssel-Austausch und die Berechtigungen sind der schwierigste Teil hat mich "Tage" gekostet um das auf Windows hinzubekommen - bitte lest die Anleitung vor allem bzgl. Keyaustausch)
  • DropBox und Co mit RClone

als Beispiel mal meine RSYNC setting (SAMBA/CIFS ist als Beispiel ja in der original Datei):

Code
export ARCHIVE_SYSTEM=rsync
export RSYNC_USER=teslacam
export RSYNC_SERVER=192.168.y.x
export RSYNC_PATH=/cygdrive/d/IPCams/TeslaCam

192.168.y.x ist mein windows client mit einem SSH server. D:\\.... der lokale Pfad zur Dateiablage (im meinen Fall des windows SSH servers muss ich die Cygwin Nomenklatur verwenden) und teslacam der windows/ssh user der dort schreiben darf. Ein passwort braucht man nicht, da die Authentifizierung über SSH-Keys läuft (sobald mal eingerichtet). Ist der Windowsrechner nicht mit ping erreichpar muss archive-is-reachable.sh angepasst werden (auf einen ping erreichbaren Rechner) damit der PI weiss er darf mit der Übertragung loslegen.

Nun weiter auf dem PI selber

Sind alle Parameter gespeichert, die SD Karte in den PI stecken und booten.


Das USB zu USB Kabel nicht in den Powerslot einstecken!

Strom bekommt der Zero auch vom USB port.


Je nach Größe der SD rödelt der PI dann ca. 2-10min - zu erkennen am Dauerleuchten der LED des PIs. Wenn man sich dann via WIFI und dem user pi password raspberry einloggt und sudo parted aufruft und dann print list all eingibt, sollte so etwas rauskommen:

mount ergibt eine deutlich längere Liste - dies nur zum Vergleich/troubleshooten - Ihr müsst das nicht aufrufen. die mmcblk0p1,3 & 4 sollten aber da sein, ansonsten ist was schiefgelaufen.


Der Pi sollte noch immer mit Herzschlag blinken. dann kann man jetzt rebooten. Auf der shell sudo reboot aufrufen - oder notfalls PI ziehen und nach 10s wieder in den USB Port stecken. Nach dem reboot solltet Ihr am PC (ca. 2min) ein USB drive namens CAM und MUSIC (wenn ihr den Music bereich eingerichtet habt) sehen. USB 2-3 Meldungen dazwischen ignorieren, die kommen von der bootphase des PIs. Auf dem CAM drive sollte noch ein Verzeichnis mit dem Namen TeslaCam sein damit es im Aut o funktioniert und erkannt wird.



hier nochmals meine komplette konfig:

RSYNC Spezialitäten

Falls Ihr SSH basierten Sync nutzt. Loggt Euch vom PI in Euren Storagerserver ein (als root) und vice versa (mit SSH) um zu prüfen ob der keys des PIs bekannt ist (kann er eigentlich nicht).

So also nicht - wenn hier das Passwort abgefragt wird wird das ganze nicht funktionieren.


also auf dem PI als root (also nach sudo -i) folgedes aufrufen:

der Inhalt der Datei .ssh/id_rsa.pub muss jetzt in die Datei authorized_keys auf dem SSH Server (im Verzeichnis .ssh des Benutzers der aufgerufen wird).

Nicht vergessen - Berechtigung und owner der Datei darf nur der SSH nutzer (hier teslacam) und SYSTEM selber sein (falls Ihr die Datei unter einem anderen Nutzeraccount bearbeitet). Danach nochmals vom PI aus ssh -l loginname ipadresse aufrufen und bestätigen, dass der host in die known_host liste eingetragen wird. Ansonsten wird die automatische Verbindungsaufnahme immer noch scheitern.


BTW die config landet final im root user verzeichnis

Code
root@teslausbm3:~# cat .teslaCamRsyncConfig
user=teslacam
server=192.168.x.y
path=/cygdrive/d/IPCams/TeslaCam

Kontrolliert die Datei aber bitte - Windows und backslash contra Linux ist manchmal etwas schwierig, bzw. in meinem Fall als Cygdrive umnzusetzen. That's it - Installation done - Have fun


Ah ein Tipp noch wenn Ihr mit rsync arbeitet und evtl. alles außer den recentFile syncen wollt und die Verzeichnisstruktur auch erhalten belieben soll setzt das

Code
rsync -auvh --timeout=60 --remove-source-files --no-perms --stats --log-file=/tmp/archive-rsync-cmd.log --exclude 'RecentClip*' $CAM_MOUNT/TeslaCam/* $user@$server:$path

in die Datei /root/bin/archive-clips.sh statt den einzelnen Verzeichnissen ein.

RCLONE - NextCloud Spezialitäten

Unter https://github.com/cimryan/tes…master/doc/SetupRClone.md ist beschrieben wie Ihr rclone mit TeslaUSB bei der Initialen Konfig konfiguriert. Es geht aber natürlich auch später wenn man sich umentscheided (von Samba ... wechselt):

Falls noch nicht installiert müsst Ihr rclone installieren dazu

Schritt 1: rclone basic Installation und Konfiguration

Code
sudo apt-get install rclone

aufrufen. Dann geht es weiter mit der config in meinem Fall für Nextcloud. Da dies unabhängig von TeslaUSB ist kommt dazu ein extra Artikel. Hier nun die Konfiguration, die man für TeslaUSB vornehmen muss.


Die Basis Scripts für rclone Benutzung finden sich unter https://github.com/marcone/tes…n-dev/run/rclone_archive:


Rclone scripts für teslausb auf github


aber nun Schritt für Schritt davon ausgehend, dass die teslausb setup scripte schon mal durchgelaufen sind und man rclone (mit nextcloud) eingerichtet hat.

Schritt 2: Variablen setzen

auf der shell des teslausbs im root Benutzerverzeichnis die teslaCamRcloneConfig Datei erstellen - oder modifizieren (siehe unten) wenn Sie schon existiert. Editieren unter Linux shell meist mit vi - der vi ist etwas komplizierter zu erklären, deswegen hier ein Link auf eine Kurzreferenz.

Code
root@teslausb4:~# vi .teslaCamRcloneConfig

wenn IHr die Datei mit vi geöffnet habt in den Insert mode wechseln (i drücken) und die folgenden zwei Zeilen reinpasten:

Code
export drive=privatecloud
export path=Cameras/TeslaCam

$drive ist Euer remote nextcloud speicher den Ihr in Schritt eins mit rclone konfiguriert habt und $path das dortige Ablageverzeichnis (die Werte müsste Ihr natürlich für Eure Nextcloud entsprechend anpassen).

Mit ESC wieder in den Kommandomodes und mit :w! abspeichern. Wenn Euch etwas missglückt ist kann man den vi im Kommandomodus via :q! ohne speichern verlassen. x löscht ein Zeichen und dd die ganze Zeile...


Den Inhalt der Datei (wie sie denn aussehen sollte) seht Ihr in der cat Ausgabe.

Code
root@teslausb4:~# cat .teslaCamRcloneConfig
export drive=privatecloud
export path=Cameras/TeslaCam

Schritt : Backup der Skripte und neue von github herunterladen

Jetzt ins bin Verzeichnis wechseln und Eure "alte" scripts Dateien sichern:

Code
root@teslausb4:~# cd bin
root@teslausb4:~/bin# mkdir backup;cp *.sh backup 

und die rclone version mit curl herunterladen und mit dem executable bit (+x) versehen.
Anmerkung: curl lädt die Dateien der URL (github) herunter und -o leitet das dann in die lokale Datei um.

Code
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/archive-clips.sh -o archive-clips.sh;
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/connect-archive.sh -o connect-archive.sh;
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/disconnect-archive.sh -o disconnect-archive.sh;
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/archive-is-reachable.sh -o archive-is-reachable.sh;
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/write-archive-configs-to.sh -o write-archive-configs-to.sh;
curl https://raw.githubusercontent.com/marcone/teslausb/main-dev/run/rclone_archive/verify-and-configure-archive.sh -o verify-and-configure-archive.sh;
chmod +x *.sh;

Das war's dann eigentlich auch schon.

Anmerkung: Die Skripte müssen nur da sein (im bin Verzeichnis mit +x versehen), da ist nichts dran zu editeren und Ihr müsst diese auch nicht manuell aufrufen (das macht teslausb automatisch).

Ihr könntet höchstens statt dem Google DNS server (8.8.8.8) Eure nextcloud IP in archive-is-reachable.sh eintragen - das schadet zumindest nicht und die Übertragung wird nur gestartet, wenn Euer Server wirklich erreichbar ist. Man kann natürlich auch den DNS Namen statt der IP Adresse nehmen - speziell wenn man eine dynamische IP Adresse nutzt.


Wenn Ihr jetzt die Funkion testen wollt, einfach die IP adresse in archive-is-reachable.sh ändern, so dass die IP nicht mehr erreichbar ist (simuliert ein herausfahren aus dem WLAN) im /mutable/archiveloop.log steht dann nach ein paar Sekunden "Waiting for archive to be reachable". Dann wieder die korrekte IP eintragen und es müsste ein rclone Sycn (oder eher move) angeworfen werden.

Nicht über den Zeitstempel der rclone Zeilen wundern - hatte erst das x bit vergessen (siehe oben chmod), da tat sich dann nat. nix.

Nachtrag Musicdatei syncronisierung

Obiges in die Datei /root/bin/copy-music.sh einfügen (mit vi :(). chmod +x i /root/bin/copy-music.sh nicht vergessen.

Last but not least noch eine Variable in der rcloneconfig hinzufügen (mpath):

Code
root@teslausb4:~/bin# cat ../.teslaCamRcloneConfig
export drive=privatecloud
export path=Cameras/TeslaCam
export mpath=Music

mpath zeigt auf den Musik-Folder in Eurer Nextcloud und zu guter letzt mkdir /mnt/musicarchive (das Verzeichnis wird auf vorhandesein geprüft warum auch immer).

WIFI Probleme

Kontrolliert /etc/wpa_supplicant/wpa_supplicant.conf wenn da das falsche PWD oder SSID drin steht korrigieren. Auch das LAND sollte angepasst werden (steht evtl. auf US, bei uns ist DE richtig). Das könnte speziell beim R4 relevant sein (5GHz Wifi).

Troubleshooting

Wenn der Pi läuft findet mal die logs unter


/tmp/archive-rsync-cmd.log

/mutable/archiveloop.log


Um den Pi ohne komplettes neu setup zu aktualisieren (also ich meine den TeslaUSB Anteil) folgendes aufrufen:

Code
sudo -i
/root/bin/remountfs_rw
/root/bin/setup-teslausb selfupdate
/root/bin/setup-teslausb
reboot

Wenn Ihr an den Scripts gebastelt habt, müsst Ihr diese Änderungen danach wieder einfügen.


Weitere Tipps findet Ihr unter: https://github.com/marcone/tes…eshooting#troubleshooting

Die wichtigsten Skripte erklärt

Hier mal eine kurze übersicht was denn teslausb so an skripten nutzt (nach der Installation):

  • archive-is-reachable.sh: Hier steht der Server drin, der zum prüfen der Erreichbarkeit Eures sychronisationsspeichers verwendet wird. Das ist meist derselbe server kann aber auch mal zum Beispiel der WLAN Router selber sein.
  • achive-loop.sh: Hauptprogrammschleife die quasi permanent läuft und andere Skripte aufruft
  • archive-clips.sh: Hier müsst Ihr eingreifen wenn Ihr den Sync-process selber anpassen wollt. Ich habe hier z.b. das RSYNC so angepasst, dass es meinen Bedürfnissen entsprcht.


GPIO Breakout

 

PI4 und PI0 GPIO Belegung

Comments 5

  • Super Anleitung und nimmt die Angst es zu wagen.
    Bitte noch erweitern mit Datenschubserei auf die eigene Nextcloud.

    • Mach ich noch - sollte mit rclone eigentlich kein Problem sein (soweit die Theorie)

    • Berndte muss sich einfach trauen, wir sind ja auch in's kalte Wasser gesprungen :D

  • sehr schön, die Anleitung ist deutlich gewachsen und übersichtlicher geworden :D

    • EIgentlich reicht ja Flashen, config editieren, in R0 stecken, ans Auto stecken - done :) Die meisten Kniffeligen Sachen sind eher WIFI und RSYNC ... Stromversorgung falls er nach Fahrzeugsshutdown noch online sein soll... viele Ideen wenig Zeit.