Video broadcast via Wifi

This projects uses a interesting DIY approach to broadcast video via wifi. Video transmitter and receiver are never directly associated. The receiver is put into monitor mode. This results in a transmission that behaves more like a analog solution. With a weaker signal there is not an immediate disruption of the transmission but a degradation because of packet loss.

 

Wifibroadcast – Analog-like transmission of live video data

HowTo Enable the RaspiCam in Octoprint

First, if you haven’t already, activate the camera in raspi-config. Login via SSH type “sudo raspi-config” select “Interfacing Options” and enable the camera.

Configuring the camera

Now edit “sudo nano /boot/octopi.txt” uncomment the camera=”auto” line and change it to camera=”raspi”. Uncomment camera_raspi_options=”-fps 10″. These settings configure the camera to provide and image in the format 640×480@10fps. If you would like to change that check the available options in the official forum: discourse.octoprint.org/t/available-mjpg-streamer-configuration-options

Enabling the camera in the octoprint browser interface

In the browser click on the little wrench in the top bar to open the settings dialog. Select “Webcam & Timelapse”. Set the “Stream URL” parameter to “http://octopi.local:8080/?action=stream”. Obviously change the hostname if you have configured it to something different.

Finally restart octoprint for the changes to take effect.

Reverse Port Forwarding

On the remote computer

Create a ssh connection to the home computer and start a local ssh server listening on port 2210 on it.

 ssh -R 2210:localhost:22 homeuser@[home-ip]

add –C to activate compression

add -f -N to put the process into the background

On the home computer

Connect to the local ssh server created by the remote connection.

ssh -p 2210 remoteuser@localhost

Disable Bluetooth on the Raspberry Pi Zero W

The onboard Bluetooth device of the Raspberry Pi Zero W and the Pi 3 can be disabled by adding dtoverlay=pi3-disable-bt to the config.txt file. Wifi is disabled with dtoverlay=pi3-disable-wifi.

The config.txt file is read by the GPU before the ARM CPU and Linux are initialised. It must be located on the first (boot) partition of your SD card alongside bootcode.bin and start.elf. This file is normally accessible as /boot/config.txt from Linux, and must be edited as root. From Windows or OS X it is visible as a file in the only accessible part of the card. If you need to apply some of the config settings below, but you don’t have a config.txt on your boot partition yet, simply create it as a new text file.

Any changes will only take effect after you have rebooted your Raspberry.

More boot config options for the Raspberry devices are documented here: https://www.raspberrypi.org/documentation/configuration/config-txt/

 

HowTo build the Marlin 3D Printer Firmware on the Raspberry Pi

If you are already running the excellent octoprint as a printserver on a Raspberry Pi it is very convenient to also build Marlin on it. The new Raspberry Pi Zero W with onboard wifi is at only 10$ just perfect for both tasks. If you want to use the camera streaming of octoprint I would recommend a Pi3 though.

I made a script that sets up the necessary build environment and provides commands for building and uploading. It uses the official Arduino toolchain. Everything is standalone, nothing is installed outside the marlintool directory.

Code

here on github: https://github.com/mmone/marlintool

or download directly as a zip: https://github.com/mmone/marlintool/archive/master.zip

Build configuration

Before first use: Rename the marlintool.params.example file to “marlintool.params”

In its default configuration the script is setup to build the official “Marlin” firmware  but can be easily reconfigured to build any Marlin variant.

Several additional parameters in the “marlintool.params” file allow to adapt the script to your needs.

parameter description
marlinRepositoryUrl The marlin git repository.
marlinRepositoryBranch The branch of the configured repo to use.
marlinDependencies A list of dependencies to download in the format:
[name],[repo url],[library directory](optional).
A library directory should only be specified if the library is not in the root of the repository.
hardwareDefinitionRepo If you build for the Anet board this downloads the necessary hardware definition for the Arduino build environment. If you dont need this set it to an empty string.
boardString The Anet board identifier.
arduinoToolchainVersion The Arduino toolchain version to use. The build platform and architecture are auto detected. At the moment Linux 32 Bit, 64 Bit, ARM and OS X are supported.
port The serialport to use for uploading.
arduinoDir Where to put the Arduino toolchain.
marlinDir Where to checkout Marlin sources.
buildDir The build directory.

Reminder: If you are running octopi on you Raspberry you need to disconnect it from your printer before uploading, otherwise the serial port is blocked.

Note: On OS X due to how the Arduino toolchain is packaged the Arduino splash screen will be displayed even when the toolchain is used from the commandline. This will cause the terminal window you launch marlintool from to lose focus. It also means that a build cannot be launched from a remote ssh session.

Building for Anet Hardware

If you are building the firmware for the Anet A6/A8 you can find suitable example configurations in the Marlin sources at: github.com/MarlinFirmware/Marlin/tree/1.1.x/Marlin/example_configurations/Anet. Just replace the “Configuration.h” and “Configuration_adv.h” in the marlin directory with the files your find there for a good starting point of your configuration.

 

Commandline parameters

-s  — setup

Download and configure the toolchain and the necessary libraries for building Marlin. Also fetches the Anet board hardware definition from github if specified.

-m  — marlin

Download Marlin sources.

-f –fetch

Update an existing Marlin clone.

-v  — verify

Build without uploading.

-u  — upload

Build and upload Marlin. If you are running octopi on you Raspberry you need to disconnect it before uploading otherwise the serial port is blocked.

-b  –backupConfig  [name]

Backup the Marlin configuration to the named backup.

-r  –restoreConfig [name]

Restore the given configuration into the Marlin directory.

-c  — clean

Cleanup everything. Remove Marlin sources and Arduino toolchain.

-p  — port [port]

Set the serialport for uploading the firmware. Overrides the default set in the script.

-h  — help

Show help.

Formatting a Disk with FAT32 on OSX Command-Line

If the Disk Utility GUI on OSX doesn’t allow you to format a USB Stick or SD Card with FAT32 the command-line does.

  1. List the available disks with: “diskutil list”
  2. Find the device you want to format eg.: “/dev/disk2” and use this device in the next command.
  3. Format with:sudo diskutil eraseDisk FAT32 DISKNAME MBRFormat /dev/disk2″