A simple solution (2019-Mar-15) I used successfully is to:
Download an older portable version of Chrome (not sure about direct links posting rules here, a search for "portable chrome 71 stable" should get you there
make sure you have jq and nodejs installed or the script doesn't work.
NOTE: to get the initial chromecast IP you have to connect to it's wifi hotspot (ChromeCastXXXX) and then use wireshark on your laptop/desktop's wifi interface to see it. Filter for arp requests. There will only be 2 IPs; your wifi interface and the Chromecast. Use the IP for the Chromecast in the spot above.
The TMC driver interpolate setting may reduce the audible noise of printer movement at the cost of introducing a small systemic positional error. This systemic positional error results from the driver's delay in executing "steps" that Klipper sends it. During constant velocity moves, this delay results in a positional error of nearly half a configured microstep (more precisely, the error is half a microstep distance minus a 512th of a full step distance). For example, on an axis with a 40mm rotation_distance, 200 steps_per_rotation, and 16 microsteps, the systemic error introduced during constant velocity moves is ~0.006mm.
For best positional accuracy consider using spreadCycle mode and disable interpolation (set interpolate: False in the TMC driver config). When configured this way, one may increase the microstep setting to reduce audible noise during stepper movement. Typically, a microstep setting of 64 or 128 will have similar audible noise as interpolation, and do so without introducing a systemic positional error.
If using stealthChop mode then the positional inaccuracy from interpolation is small relative to the positional inaccuracy introduced from stealthChop mode. Therefore tuning interpolation is not considered useful when in stealthChop mode, and one can leave interpolation in its default state.
$ cd klipper
$ make menuconfig
[*] Enable extra low-level configuration options
Micro-controller Architecture (Atmega AVR)
Processor model (atmega2560)
$ make
..........
Building out/compile_time_request.o
Version: v0.12.0-171-g2f6e94c9
Linking out/klipper.elf
Creating hex file out/klipper.elf.hex
$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
$ make flash FLASH_DEVICE=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
$ journalctl -u klipper-mcu | more
Oct 08 23:32:09 orangepizero3 systemd[1]: Started klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:09 orangepizero3 klipper_mcu[615]: Got error -1 in sched_setscheduler: (1)Operation not permitted
Oct 08 23:32:09 orangepizero3 systemd[1]: klipper-mcu.service: Main process exited, code=exited, status=255/EXCEPTION
Oct 08 23:32:09 orangepizero3 systemd[1]: klipper-mcu.service: Failed with result 'exit-code'.
Oct 08 23:32:15 orangepizero3 systemd[1]: klipper-mcu.service: Scheduled restart job, restart counter is at 1.
Oct 08 23:32:15 orangepizero3 systemd[1]: Stopped klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:15 orangepizero3 systemd[1]: Started klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup.
Oct 08 23:32:15 orangepizero3 klipper_mcu[1249]: Got error -1 in sched_setscheduler: (1)Operation not permitted