8.5 KiB
Flashable image to get started more quickly
This is a WORK IN PROGRESS, SHOULD CURRENTLY BE WORKING.
Notes
- Assumes your Pi has access to Wifi, with internet access (during setup). (But all setup methods do currently.) USB networking is still enabled for troubleshooting or manual setup
- This image will work for either headless (tested) or manual (tested less) setup.
- Currently not tested with the RSYNC/SFTP method when using headless setup.
Configure the SD card before first boot of the Pi
- Flash the latest image release using Etcher or similar.
For headless (automatic) setup
-
Mount the card again, and in the
bootdirectory create ateslausb_setup_variables.conffile to export the same environment varibles normally needed for manual setup (including archive info, Wifi, and push notifications (if desired).) A sample conf file is located in thebootfolder on the SD card.The file should contain the entries below at a minimum, but replace with your own values:
export archiveserver=Nautilus export sharename=SailfishCam export shareuser=sailfish export sharepassword=pa$$w0rd export campercent=100 export SSID=your_ssid export WIFIPASS=your_wifi_password export HEADLESS_SETUP=true export REPO=rtgoodwin export BRANCH=headless-patch # Currently set to track this repo/branch while under development. # export pushover_enabled=false # export pushover_user_key=user_key # export pushover_app_key=app_key(For now, please leave the REPO and BRANCH set to the settings above.)
- Boot it in your Pi, give it a bit, watching for a series of flashes (2, 3, 4, 5) and then a reboot and/or the CAM to become available on your PC/Mac. The LED flash stages are:
| Stage (number of flashes) | Activity |
|---|---|
| 2 | Verify setup variables |
| 3 | Grab scripts to start/continue setup |
| 4 | Create partition and files to store camera clips/music) |
| 5 | Setup completed; remounting filesystems as read-only and rebooting |
- The Pi should be available for
sshatpi@teslausb.local, over Wifi (if automatic setup works) or USB networking (if it doesn't). It takes about 5 minutes, or more depending on network speed, etc. - If plugged into just a power source, or your car, give it a few minutes until the LED starts pulsing steadily which means the archive loop is running and you're good to go.
- You should see in
/bootthe TESLAUSB_SETUP_FINISHED and WIFI_ENABLED files as markers of success as well.
For manual setup
-
After flashing the image, boot it in your Pi and:
- connect via USB networking at
ssh pi@teslausb.local. (The Pi must be connected to your PC and plugged into the port labeled USB on the Pi. Or... - You can also automate only the Wifi portion of setup by creating the
boot/teslausb_setup_variables.conffile and populating it with theSSIDandWIFIPASSvariables:
export SSID=your_ssid export WIFIPASS=your_wifi_pass - connect via USB networking at
-
Once you have an
sshsession, follow the steps starting at Set up the USB storage functionality in the main guide.
Troubleshooting
Headless (full or Wifi) setup
sshtopi@teslausb.local(assuming Wifi came up, or your Pi is connected to your computer via USB) and look at the/boot/teslausb-headless-setup.log.- Try
sudo -iand then run/etc/rc.local. The scripts are fairly resilient to restarting and not re-running previous steps, and will tell you about progress/failure. - If Wifi didn't come up:
- Double-check the SSID and WIFIPASS variables in
teslausb_setup_variables.conf, and remove/boot/WIFI_ENABLED, then booting the SD in your Pi to retry automatic Wifi setup. - If still no go, re-run
/etc/rc.local - If all else fails, copy
/boot/wpa_supplicant.conf.sampleto/boot/wpa_supplicant.confand edit out theTEMPvariables to your desired settings. - (Note: if you get an error about
read-only filesystem, you may have tosudo -iand run/root/bin/remountfs_rw.
- Double-check the SSID and WIFIPASS variables in
Background information
What happens under the covers
When the Pi boots the first time:
- A
/boot/teslausb-headless-setup.logfile will be created and stages logged. - Marker files will be created in
bootlikeTESLA_USB_SETUP_STARTEDandTESLA_USB_SETUP_FINISHEDto track progress. - Wifi is detected by looking for
/boot/WIFI_ENABLEDand if not, creates thewpa_supplicant.conffile in place, usingSSIDandWIFIPASSfromteslausb_setup_varibles.confand reboots. - The Pi LED will flash patterns (2, 3, 4, 5) as it gets to each stage (labeled in the setup-teslausb-headless script).
- 10 flashes means setup failed!
- After the final stage and reboot the LED will go back to normal. Remember, the step to remount the filesystem takes a few minutes.
At this point the next boot should start the Dashcam/music drives like normal. If you're watching the LED it will start flashing every 1 second, which is the archive loop running.
NOTE: Don't delete the
TESLAUSB_SETUP_FINISHEDorWIFI_ENABLEDfiles. This is how the system knows setup is complete.
Image builder source and patches
For now the image creation work is at:
- Modified pi-gen rtgoodwin's fork of pi-gen in (whatever current branch I'm working at the time).
headless-patchbranch of rtgoodwin fork https://github.com/rtgoodwin/teslausb/tree/headless-patch/headless-scripts
Image refinement TODOs
Patch the hostname to teslausb- Make it so if someone deletes the
TESLAUSB_SETUP_FINISHEDfile it's handled gracefully. (Right now it will try to re-run setup which should be fine.) - Cache the remount packages? Might mess with first boot like
rsyslog - Aspirational TODO: Remove more packages and set services to stopped to make the boot process faster?
- At this point, it's designed to pull the setup scripts dynamically, since development is still ongoing. If/when we reach a good frozen state, we can generate an image that is essentially ready to run. I think it'll also be pretty tricky to do some of the remounting and creating the backing files etc. on the image creation side. Open to suggestions/contributions there though!
Modifications to pi-gen builder from master
The image is built on a Raspberry Pi 3B running Stretch, for maximum Pi-ception.
This is the basic configuration, but it's helpful to just look at the code itself and the Readme for Pi-gen which explains this all in much greater detail:
-
Added SKIP and SKIP_IMAGES files to stage3, 4, and 5 (if present). We want to build the default image up to stage2, then add our own stage for tweaks we want.
-
Added a
stage6(or 7, just something beyond stage5). (There are stages 0-4 in the main repo by default, but may be a stage5 in some cases. This will help keep a clean merge later.) -
Copy the prerun.sh from
stage2. Be SURE tochmod +xit. -
Remove or rename the EXPORT_NOOBS files in all stages. We don't need a NOOBS image built.
-
In
stage6, create a00-tweaksfolder, with a00-patchesfolder and patches inside. Currently patched:File Change cmdline.txtAdd the dwc2,g_ether modules config.txtAdd the dwc2 module hostsChange hostname to teslausbhostnameChange hostname to teslausb- The build process uses
quiltfor patching - The path for any patching you do at this stage is
stage6/rootfs/FILEPATHwhererootfsrepresents the Pi's/. So,cmdline.txtisstage6/rootfs/boot/cmdline.txt.
- The build process uses
-
Added a file called
seriesin the patches directory with the name of each.difffile in the order you want them applied. -
Added a
filesfolder in stage6 with modifiedrc.local, and whatever else you want copied into the image. The modifiedrc.localwill handle pulling down thesetup-teslausb-headlessfile the first time. -
Added a script to flash the Pi LED
-
Files are moved into final locations using the
00-run.shscript using theinstallcommand. See the script for details. I alsotouch /boot/sshhere so SSH is ready out of the box. -
Run
sudo ./build.shfrom thepi-gendirectory. -
If you get a failure, it's almost certainly after stage2, so you can add SKIP files in all successful stages and rerun
sudo CLEAN=1 ./build.sh