ken830 / teslausb

Steps and scripts for turning a Raspberry Pi into a useful USB drive for a Tesla

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

teslausb

Meta

This repo contains steps and scripts originally from this thread on Reddit

Many people in that thread suggested that the scripts be hosted on Github but the author didn't seem interested in making that happen. I've hosted the scripts here with his/her permission.

The original post on Reddit assumed that the archive would be hosted on Windows and that the Pi would be set up using a Windows machine but this Git repo welcomes the contribution of instructions for other platforms.

Intro

You can configure a Raspberry Pi Zero W so that your Tesla thinks it's a USB drive and will write dashcam footage to it. Since it's a computer, you can run scripts on the Pi to automatically copy the clips to an archive server when you get home. The Pi is going to continually:

  1. Wait until it can connect to the archive server
  2. Archive the clips
  3. Wait until it can't connect to the archive server
  4. GOTO 1.

The scripts in this repo will also allow you to use the Pi to store music that the Tesla can read through the USB interface.

Archiving the clips can take from seconds to hours depending on how many clips you've saved and how strong the WiFi signal is in your Tesla. If you find that the clips aren't getting completely transferred before the car powers down after you park or before you leave you can use the Tesla app to turn on the Climate control. This will send power to the Raspberry Pi, allowing it to complete the archival operation.

Prerequisites

Assumptions

  • You park in range of your wireless network.
  • Your wireless network is configured with WPA2 PSK access.
  • You'll be archiving your dashcam clips to a Windows machine, and the Windows machine has a stable IP address on your home network.
  • You'll be setting up the Raspberry Pi using a Windows machine.

Hardware

Required:

  • Raspberry Pi Zero W: Adafruit or Amazon

    Note: Of the many varieties of Raspberry Pi only the Raspberry Pi Zero and Raspberry Pi Zero W can be used as simulated USB drives. It may be possible to use a Pi Zero with a USB Wifi adapter to achieve the same result as the Pi Zero W, but this hasn't been confirmed.

  • A Micro SD card, at least 8 GB in size, and an adapter (if necessary) to connect the card to your computer.

  • A mechanism to connect the Pi to the Tesla. Either:

    • A USB A/Micro B cable: Adafruit or Amazon, or
    • A USB A Add-on Board if you want to plug your Pi into your Tesla like a USB drive instead of using a cable. Amazon

Optional:

  • A case. Don't want unprotected circuits hanging about! Official case at Adafruit or Amazon. There are many others to choose from. Note that the official case won't work with the USB A Add on board.
  • USB Splitter if you don't want to lose a front USB port. The Onvian Splitter has been reported working by multiple people on reddit.

Software

Download Raspbian Stretch Lite

  • Note: Bittorrent is dramatically faster than direct download.

Download and install:

Create your archive

Hosting on Windows

Set up a share on a Windows (or macOS using Sharing, or Linux using Samba) machine to host the archive. These instructions assume that you created a share named "SailfishCam" on the server "Nautilus". It is recommended that you create a new user. Grant the user you'll be using read/write access to the share. These instructions will assume that the user you've created is named "sailfish" and that the password for this user is "pa$$w0rd".

Get the IP address of the archive machine. You'll need this later, so write it down, somewhere. You can do this by opening a command prompt on the archive machine and typing ipconfig. Get the IP address from the line labeled "IPv4 Address". These instructions will assume that the IP address of the archive server is 192.168.0.41.

TODO Other hosting solutions

Set up the Raspberry Pi

There are three phases to setting up the Pi:

  1. Get the OS onto the micro sd card.
  2. Get a shell on the Pi.
  3. Set up the USB storage functionality.

Get the OS onto the micro SD card

These instructions tell you how to get Raspbian onto your MicroSD card. Basically:

  1. Connect your SD card to your computer.
  2. Use Etcher to write the zip file you downloaded to the SD card. Etcher works well and is multi-platform.

    Note: you don't need to uncompress the zip file you downloaded.

Get a shell on the Pi

If you used a Windows computer to flash the OS onto the MicroSD card, follow these Instructions.

If you used a Mac or a Linux computer, follow these Instructions.

Set up the USB storage functionality

Now that you have Wifi up and running, it's time to set up the USB storage and scripts that will manage the dashcam and (optionally) music storage.

  1. SSH to the Pi and run
    sudo -i
    
  2. Try to ping your archive server from the Pi. In this example the server is named nautilus.
    ping -c 3 nautilus
    
  3. If the server can't be reached, ping its IP address:
    ping 192.168.0.41
    
  4. If you can't ping the archive server by IP address from the Pi, you should go do whatever you need to on your network to fix that. If you can't reach the archive server by name, from the Pi but you can by IP address, then use its IP address, below, in place of its name.
  5. Run these commands, subsituting your values. The last line is the percent of the drive you want to allocate for dashcam storage. The remaining percentage will be allocated for music.
    export archiveserver=Nautilus
    export sharename=SailfishCam
    export shareuser=sailfish
    export sharepassword=pa$$w0rd
    export campercent=100
    
  6. If you'd like to receive a text message when your Pi finishes archiving clips follow these Instructions.
  7. Run these commands:
    wget https://raw.githubusercontent.com/cimryan/teslausb/master/windows_archive/setup-teslausb
    chmod +x setup-teslausb
    ./setup-teslausb
    
  8. Run this command:
    halt
    
  9. Disconnect the Pi from the computer.

On the next boot, the Pi hostname will become teslausb, so future ssh sessions will be ssh pi@teslausb.local.

Your Pi is now ready to be plugged into your Tesla. If you want to add music to the Pi, follow the instructions in the next section.

(Optional) Add music to the Pi

Connect the Pi to a computer. If you're using a cable be sure to use the port labeled "USB" on the circuitboard.

  1. Wait for the Pi to show up on the computer as a USB drive.
  2. Copy any music you'd like to the drive labeled MUSIC.
  3. Eject the drives.
  4. Unplug the Pi from the PC.
  5. Plug the Pi into your Tesla.

Making changes to the system after setup

The setup process configures the Pi with read-only file systems for the operating system but with read-write access through the USB interface. This means that you'll be able to record dashcam video and add and remove music files but you won't be able to make changes to files on / or on /boot. This is to protect against corruption of the operating system when the Tesla cuts power to the Pi.

To make changes to the system partitions:

ssh pi@teslausb.
sudo -i
/root/bin/remountfs_rw

Then make whatever changes you need to. The next time the system boots the partitions will once again be read-only.

About

Steps and scripts for turning a Raspberry Pi into a useful USB drive for a Tesla

License:MIT License


Languages

Language:Shell 92.5%Language:PowerShell 7.5%