├── .gitignore ├── README.md ├── sdcard ├── LICENCE.broadcom ├── README.txt ├── bcm2708-rpi-0-w.dtb ├── bcm2835-rpi-zero.dtb ├── boot.py ├── boot.sh ├── bootcode.bin ├── cmdline.txt ├── config.txt ├── fixup.dat ├── fixup_cd.dat ├── fixup_db.dat ├── fixup_x.dat ├── kernel.img ├── localtime ├── main.py ├── overlays │ ├── README │ ├── adau1977-adc.dtbo │ ├── adau7002-simple.dtbo │ ├── ads1015.dtbo │ ├── ads1115.dtbo │ ├── ads7846.dtbo │ ├── akkordion-iqdacplus.dtbo │ ├── allo-boss-dac-pcm512x-audio.dtbo │ ├── allo-digione.dtbo │ ├── allo-piano-dac-pcm512x-audio.dtbo │ ├── allo-piano-dac-plus-pcm512x-audio.dtbo │ ├── at86rf233.dtbo │ ├── audioinjector-addons.dtbo │ ├── audioinjector-wm8731-audio.dtbo │ ├── audremap.dtbo │ ├── bmp085_i2c-sensor.dtbo │ ├── dht11.dtbo │ ├── dionaudio-loco-v2.dtbo │ ├── dionaudio-loco.dtbo │ ├── dpi18.dtbo │ ├── dpi24.dtbo │ ├── dwc-otg.dtbo │ ├── dwc2.dtbo │ ├── enc28j60-spi2.dtbo │ ├── enc28j60.dtbo │ ├── fe-pi-audio.dtbo │ ├── goodix.dtbo │ ├── googlevoicehat-soundcard.dtbo │ ├── gpio-ir.dtbo │ ├── gpio-poweroff.dtbo │ ├── gpio-shutdown.dtbo │ ├── hifiberry-amp.dtbo │ ├── hifiberry-dac.dtbo │ ├── hifiberry-dacplus.dtbo │ ├── hifiberry-digi-pro.dtbo │ ├── hifiberry-digi.dtbo │ ├── hy28a.dtbo │ ├── hy28b.dtbo │ ├── i2c-bcm2708.dtbo │ ├── i2c-gpio.dtbo │ ├── i2c-mux.dtbo │ ├── i2c-pwm-pca9685a.dtbo │ ├── i2c-rtc-gpio.dtbo │ ├── i2c-rtc.dtbo │ ├── i2c-sensor.dtbo │ ├── i2c0-bcm2708.dtbo │ ├── i2c1-bcm2708.dtbo │ ├── i2s-gpio28-31.dtbo │ ├── iqaudio-dac.dtbo │ ├── iqaudio-dacplus.dtbo │ ├── iqaudio-digi-wm8804-audio.dtbo │ ├── justboom-dac.dtbo │ ├── justboom-digi.dtbo │ ├── lirc-rpi.dtbo │ ├── mcp23017.dtbo │ ├── mcp23s17.dtbo │ ├── mcp2515-can0.dtbo │ ├── mcp2515-can1.dtbo │ ├── mcp3008.dtbo │ ├── midi-uart0.dtbo │ ├── midi-uart1.dtbo │ ├── mmc.dtbo │ ├── mpu6050.dtbo │ ├── mz61581.dtbo │ ├── papirus.dtbo │ ├── pi3-act-led.dtbo │ ├── pi3-disable-bt.dtbo │ ├── pi3-disable-wifi.dtbo │ ├── pi3-miniuart-bt.dtbo │ ├── piscreen.dtbo │ ├── piscreen2r.dtbo │ ├── pisound.dtbo │ ├── pitft22.dtbo │ ├── pitft28-capacitive.dtbo │ ├── pitft28-resistive.dtbo │ ├── pitft35-resistive.dtbo │ ├── pps-gpio.dtbo │ ├── pwm-2chan.dtbo │ ├── pwm.dtbo │ ├── qca7000.dtbo │ ├── raspidac3.dtbo │ ├── rotary-encoder.dtbo │ ├── rpi-backlight.dtbo │ ├── rpi-cirrus-wm5102.dtbo │ ├── rpi-dac.dtbo │ ├── rpi-display.dtbo │ ├── rpi-ft5406.dtbo │ ├── rpi-proto.dtbo │ ├── rpi-sense.dtbo │ ├── rpi-tv.dtbo │ ├── rra-digidac1-wm8741-audio.dtbo │ ├── sc16is750-i2c.dtbo │ ├── sc16is752-spi1.dtbo │ ├── sdhost.dtbo │ ├── sdio-1bit.dtbo │ ├── sdio.dtbo │ ├── sdtweak.dtbo │ ├── smi-dev.dtbo │ ├── smi-nand.dtbo │ ├── smi.dtbo │ ├── spi-gpio35-39.dtbo │ ├── spi-rtc.dtbo │ ├── spi0-cs.dtbo │ ├── spi0-hw-cs.dtbo │ ├── spi1-1cs.dtbo │ ├── spi1-2cs.dtbo │ ├── spi1-3cs.dtbo │ ├── spi2-1cs.dtbo │ ├── spi2-2cs.dtbo │ ├── spi2-3cs.dtbo │ ├── tinylcd35.dtbo │ ├── uart1.dtbo │ ├── vc4-fkms-v3d.dtbo │ ├── vc4-kms-v3d.dtbo │ ├── vga666.dtbo │ ├── w1-gpio-pullup.dtbo │ ├── w1-gpio.dtbo │ └── wittypi.dtbo ├── serial_mode ├── settings.txt ├── start.elf ├── start_cd.elf ├── start_db.elf ├── start_x.elf ├── versions.txt ├── wpa_supplicant.conf └── wpa_supplicant_ap.conf └── source ├── kernel ├── f_mass_storage.c └── kernel.config └── raspbian ├── build ├── cleanup ├── env.sh ├── excludes.conf ├── fs ├── etc │ ├── fstab │ ├── hostapd.conf │ ├── hostname │ ├── hosts │ ├── issue │ ├── profile.d │ │ └── resize.sh │ ├── systemd │ │ ├── network │ │ │ ├── en.network │ │ │ └── wlan.network │ │ └── system │ │ │ ├── dhcpd.service │ │ │ ├── dropbear.service │ │ │ ├── piratepython.service │ │ │ ├── usb-gadget.service │ │ │ ├── wpa_supplicant@.service │ │ │ └── wpa_supplicant_ap@.service │ ├── udhcpd.conf │ └── wpa_supplicant │ │ ├── wpa_supplicant-wlan0.conf │ │ └── wpa_supplicant_ap-wlan0.conf └── sbin │ ├── piratepython │ ├── piratepython-ap │ ├── piratepython-configparse │ ├── piratepython-mode │ ├── piratepython-sync │ └── piratepython-usb ├── multistrap.conf ├── pip ├── evdev-0.7.0-cp35-cp35m-linux_armv6l.whl ├── rpi_ws281x-3.0.3-cp34-cp34m-linux_armv6l.whl ├── rpi_ws281x-3.0.3-cp35-cp35m-linux_armv6l.whl └── unicornhat-2.2.3.tar.gz ├── piratepython-usb └── scripts ├── addusers.sh ├── copyfs.sh ├── final.sh ├── implode.sh ├── packrootfs.sh ├── pipinstall.sh └── pyinstalled.sh /.gitignore: -------------------------------------------------------------------------------- 1 | sdcard/initrd 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PiratePython Alpha 2 | 3 | A minimal, robust ground-up build of Raspbian for Python programmers, packed with Python 3.5.3 and many common libraries. 4 | 5 | Ever wanted the operating system to get out of your way and just let you write Python? PiratePython aims to bring the simplicity of MicroPython to the Pi, but all the power of the full-blown Python you're used to. 6 | 7 | Just edit main.py with your project, watch your changes reload as you save them, and see debug output over serial with PuTTY. 8 | 9 | It's also rock solid and stateless, meaning it's mighty difficult to render unbootable. 10 | 11 | For the enterprising hacker, there's SSH access, a wireless Access Point mode, boot.py and boot.sh scripts for customisation and more! 12 | 13 | ## Features 14 | 15 | * Automatic reloading of main.py, settings.txt and wpa_supplicant*.conf files 16 | * Debug output of main.py available over the first Serial Port (the one with the lower number in Windows 10, for example) 17 | * Full terminal available over the second Serial Port (username/password are pirate/p1r4t3) 18 | * Configurable username 19 | * Configure WiFi for both client and access-point modes 20 | * Switch between client/access-point WiFi modes on the fly 21 | * Enable/disable auto-reloading of main.py 22 | * Support for additional Python libraries in /libraries 23 | * Many features planned! 24 | * Replace firmware - initrd and kernel.img - over USB Mass Storage and reboot to update 25 | 26 | ## Planned 27 | 28 | * Automatic loading and mounting of expansion filesystems, containing projects that rely on binary apps/libraries, etc that are too big to fit into the initrd. Example: VLC, for Pirate Radio. 29 | * Perhaps automatic installation of libraries from a requirements.txt or similar, as long as we can replace the fragile Mass Storage mode with MTP. 30 | 31 | ## Breaking Changes 32 | 33 | Since this is an Alpha release, it's not production ready and it's likely to change drastically. You'll always find previous releases in the PiratePython release page (https://github.com/pimoroni/PiratePython/releases) if you rely on them for a project. 34 | 35 | We hope to move to MTP - Media Transfer Protocol - in future, since it's less hacky than Mass Storage. The present file syncing solution relies on proof-of-concept hacks to the f_mass_storage kernel module, in order to detect writes from the host and sync the filesystem (by unmounting and remounting /boot) so that new code can be read. This system not only requires a customized kernel module, but may be prone to race conditions where main.py is read as it is being re-written by the host. MTP should solve this! The Mass Storage Mode may be available as an option- we'll pick what works best for beginners as the default. 36 | 37 | # Compatibility 38 | 39 | ## Windows 40 | 41 | Currently working - mostly - on Windows 10 using the trick described here to get RNDIS Ethernet drivers auto-installed: https://gist.github.com/Gadgetoid/c52ee2e04f1cd1c0854c3e77360011e2 42 | 43 | ## OSX 44 | 45 | USB Mass Storage and the two Serial ports should work, but RNDIS Ethernet is not supported on OSX. Configuration options for this are planned. 46 | 47 | ## Linux 48 | 49 | Tested on Ubuntu 17.10, Ethernet, Serial and Mass Storage appear to work. 50 | 51 | # Installing 52 | 53 | We recommend you use SDFormatter to prepare your SD card, find it here: https://www.sdcard.org/downloads/formatter_4/ 54 | 55 | Download the latest release from releases: https://github.com/pimoroni/PiratePython/releases 56 | 57 | And extract it to your SD card. -------------------------------------------------------------------------------- /sdcard/LICENCE.broadcom: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006, Broadcom Corporation. 2 | Copyright (c) 2015, Raspberry Pi (Trading) Ltd 3 | All rights reserved. 4 | 5 | Redistribution. Redistribution and use in binary form, without 6 | modification, are permitted provided that the following conditions are 7 | met: 8 | 9 | * This software may only be used for the purposes of developing for, 10 | running or using a Raspberry Pi device. 11 | * Redistributions must reproduce the above copyright notice and the 12 | following disclaimer in the documentation and/or other materials 13 | provided with the distribution. 14 | * Neither the name of Broadcom Corporation nor the names of its suppliers 15 | may be used to endorse or promote products derived from this software 16 | without specific prior written permission. 17 | 18 | DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 19 | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 20 | BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 21 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 23 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 24 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 25 | OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 27 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 28 | USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 29 | DAMAGE. 30 | 31 | -------------------------------------------------------------------------------- /sdcard/README.txt: -------------------------------------------------------------------------------- 1 | Ahoy! 2 | 3 | Welcome to embedded Python on your Pi Zero W. 4 | 5 | * Unzip the contents of this folder to a fresh SD card. 6 | * Pop it into your Pi Zero W 7 | * Grab a microUSB cable and plug it into your Pi Zero W's USB port. 8 | * Connect the other end to your PC. 9 | * Up pops a new disk! 10 | 11 | Edit main.py file to make amazing things happen. 12 | Your changes will be loaded instantly! 13 | 14 | PiratePython has two USB serial ports: 15 | 16 | * The first one for your Python debug output 17 | * The second one with a bash shell 18 | 19 | On Windows 10 you can find these by; 20 | 21 | * pressing Windows + R 22 | * entering: control /name Microsoft.DevicesAndPrinters 23 | * hitting enter 24 | * finding the PiratePython device 25 | * right click -> properties 26 | * click the Hardware tab 27 | * you will see USB Serial Device (COMXX) 28 | * and a second USB Serial Device (COMYY) 29 | * use an app like PuTTY to connect! 30 | 31 | PiratePython has SSH! Configure your WiFi and: 32 | 33 | ssh pirate@piratepython.local 34 | 35 | You should also see USB Ethernet on Linux and Windows 10, 36 | currently this isn't working on OSX. 37 | 38 | Configure your network interface with the static IP 39 | 10.0.99.2. Your Pi will be 10.0.99.1. 40 | 41 | Use PuTTY on Windows: http://www.putty.org/ 42 | 43 | Edit wpa_supplicant.conf to set up your WiFi network. 44 | No need to reboot! 45 | 46 | Hostname: piratepython (you can change this in settings.txt) 47 | Username: pirate 48 | Password: p1r4t3 (you can change this in settings.txt) 49 | 50 | Edit wpa_supplicant_ap.conf to set up your WiFi access point. 51 | 52 | Change mode to ap in settings.txt to switch to access point mode. 53 | 54 | And don't forget to have fun! 55 | 56 | - The Pimoroni Pirate Crew 57 | 58 | 59 | Note: This is an extremely alpha release! 60 | 61 | TODO: 62 | * Functionality to change user password and optionally disable SSH 63 | * Other - let us know! 64 | -------------------------------------------------------------------------------- /sdcard/bcm2708-rpi-0-w.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/bcm2708-rpi-0-w.dtb -------------------------------------------------------------------------------- /sdcard/bcm2835-rpi-zero.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/bcm2835-rpi-zero.dtb -------------------------------------------------------------------------------- /sdcard/boot.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import struct 3 | import fcntl 4 | import time 5 | from sys import exit 6 | from zeroconf import ServiceInfo, Zeroconf 7 | 8 | print("Hello Boot.py") 9 | 10 | """ 11 | This example demonstrates using Python zeroconf to 12 | advertise SSH services on your PiratePython Pi. 13 | """ 14 | 15 | def get_ip_address(ifname): 16 | try: 17 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 18 | return socket.inet_ntoa(fcntl.ioctl( 19 | s.fileno(), 20 | 0x8915, # SIOCGIFADDR 21 | struct.pack(b'256s', ifname[:15]) 22 | )[20:24]) 23 | except OSError: 24 | return None 25 | 26 | addr = None 27 | 28 | for x in range(10): 29 | addr = get_ip_address(b'wlan0') 30 | if addr is not None: 31 | break 32 | time.sleep(1) 33 | 34 | if addr is None: 35 | print("Timed out finding IP address on wlan0") 36 | exit(1) 37 | 38 | info = ServiceInfo( 39 | "_sftp-ssh._tcp.local.", 40 | "PiratePython SSH._sftp-ssh._tcp.local.", 41 | socket.inet_aton(addr), 22, 0, 0, {}, 42 | "piratepython.local.") 43 | 44 | zeroconf = Zeroconf() 45 | zeroconf.register_service(info) 46 | 47 | print("Registering SSH service on: {}".format(addr)) -------------------------------------------------------------------------------- /sdcard/boot.sh: -------------------------------------------------------------------------------- 1 | echo "Hello Boot.sh" -------------------------------------------------------------------------------- /sdcard/bootcode.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/bootcode.bin -------------------------------------------------------------------------------- /sdcard/cmdline.txt: -------------------------------------------------------------------------------- 1 | dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 elevator=deadline rootwait consoleblank=0 modules-load=g_multi g_multi.file=/dev/mmcblk0p1 g_multi.stall=0 g_multi.cdrom=0 g_multi.removable=1 g_multi.nofua=0 2 | -------------------------------------------------------------------------------- /sdcard/config.txt: -------------------------------------------------------------------------------- 1 | dtparam=i2c_arm=on 2 | dtparam=spi=on 3 | dtoverlay=dwc2 4 | 5 | # Uncomment for stable serial (GPIO UART) terminal 6 | #dtoverlay=pi3-disable-bt 7 | 8 | # Uncomment for pHAT BEAT, pHAT DAC or Speaker pHAT 9 | #dtparam=hifiberry-dac 10 | 11 | gpu_mem=16 12 | 13 | initramfs initrd 14 | -------------------------------------------------------------------------------- /sdcard/fixup.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/fixup.dat -------------------------------------------------------------------------------- /sdcard/fixup_cd.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/fixup_cd.dat -------------------------------------------------------------------------------- /sdcard/fixup_db.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/fixup_db.dat -------------------------------------------------------------------------------- /sdcard/fixup_x.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/fixup_x.dat -------------------------------------------------------------------------------- /sdcard/kernel.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/kernel.img -------------------------------------------------------------------------------- /sdcard/localtime: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/localtime -------------------------------------------------------------------------------- /sdcard/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | print(""" 4 | 5 | Hello World 6 | 7 | Welcome to embedded Python on your Pi Zero W. 8 | 9 | Edit this file to make amazing things happen. 10 | Your changes will be loaded instantly! 11 | 12 | Drop extra libraries into the libraries folder. 13 | 14 | PiratePython has two USB serial ports: 15 | 16 | * The first one for your Python debug output 17 | * The second one with a bash shell 18 | 19 | On Windows 10 you can find these by; 20 | 21 | * pressing Windows + R 22 | * entering: control /name Microsoft.DevicesAndPrinters 23 | * hitting enter 24 | * finding the PiratePython device 25 | * right click -> properties 26 | * click the Hardware tab 27 | * you will see USB Serial Device (COMXX) 28 | * and a second USB Serial Device (COMYY) 29 | * use an app like PuTTY to connect! 30 | 31 | PiratePython has SSH! Configure your WiFi and: 32 | 33 | ssh pirate@piratepython.local 34 | 35 | And don't forget to have fun! 36 | 37 | - The Pimoroni Pirate Crew 38 | 39 | """) -------------------------------------------------------------------------------- /sdcard/overlays/README: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | This directory contains Device Tree overlays. Device Tree makes it possible 5 | to support many hardware configurations with a single kernel and without the 6 | need to explicitly load or blacklist kernel modules. Note that this isn't a 7 | "pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices 8 | are still configured by the board support code, but the intention is to 9 | eventually reach that goal. 10 | 11 | On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By 12 | default, the Raspberry Pi kernel boots with device tree enabled. You can 13 | completely disable DT usage (for now) by adding: 14 | 15 | device_tree= 16 | 17 | to your config.txt, which should cause your Pi to revert to the old way of 18 | doing things after a reboot. 19 | 20 | In /boot you will find a .dtb for each base platform. This describes the 21 | hardware that is part of the Raspberry Pi board. The loader (start.elf and its 22 | siblings) selects the .dtb file appropriate for the platform by name, and reads 23 | it into memory. At this point, all of the optional interfaces (i2c, i2s, spi) 24 | are disabled, but they can be enabled using Device Tree parameters: 25 | 26 | dtparam=i2c=on,i2s=on,spi=on 27 | 28 | However, this shouldn't be necessary in many use cases because loading an 29 | overlay that requires one of those interfaces will cause it to be enabled 30 | automatically, and it is advisable to only enable interfaces if they are 31 | needed. 32 | 33 | Configuring additional, optional hardware is done using Device Tree overlays 34 | (see below). 35 | 36 | raspi-config 37 | ============ 38 | 39 | The Advanced Options section of the raspi-config utility can enable and disable 40 | Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it 41 | is possible to both enable an interface and blacklist the driver, if for some 42 | reason you should want to defer the loading. 43 | 44 | Modules 45 | ======= 46 | 47 | As well as describing the hardware, Device Tree also gives enough information 48 | to allow suitable driver modules to be located and loaded, with the corollary 49 | that unneeded modules are not loaded. As a result it should be possible to 50 | remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can 51 | have its contents deleted (or commented out). 52 | 53 | Using Overlays 54 | ============== 55 | 56 | Overlays are loaded using the "dtoverlay" directive. As an example, consider 57 | the popular lirc-rpi module, the Linux Infrared Remote Control driver. In the 58 | pre-DT world this would be loaded from /etc/modules, with an explicit 59 | "modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled, 60 | this becomes a line in config.txt: 61 | 62 | dtoverlay=lirc-rpi 63 | 64 | This causes the file /boot/overlays/lirc-rpi.dtbo to be loaded. By 65 | default it will use GPIOs 17 (out) and 18 (in), but this can be modified using 66 | DT parameters: 67 | 68 | dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13 69 | 70 | Parameters always have default values, although in some cases (e.g. "w1-gpio") 71 | it is necessary to provided multiple overlays in order to get the desired 72 | behaviour. See the list of overlays below for a description of the parameters 73 | and their defaults. 74 | 75 | The Overlay and Parameter Reference 76 | =================================== 77 | 78 | N.B. When editing this file, please preserve the indentation levels to make it 79 | simple to parse programmatically. NO HARD TABS. 80 | 81 | 82 | Name: 83 | Info: Configures the base Raspberry Pi hardware 84 | Load: 85 | Params: 86 | audio Set to "on" to enable the onboard ALSA audio 87 | interface (default "off") 88 | 89 | i2c_arm Set to "on" to enable the ARM's i2c interface 90 | (default "off") 91 | 92 | i2c_vc Set to "on" to enable the i2c interface 93 | usually reserved for the VideoCore processor 94 | (default "off") 95 | 96 | i2c An alias for i2c_arm 97 | 98 | i2c_arm_baudrate Set the baudrate of the ARM's i2c interface 99 | (default "100000") 100 | 101 | i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface 102 | (default "100000") 103 | 104 | i2c_baudrate An alias for i2c_arm_baudrate 105 | 106 | i2s Set to "on" to enable the i2s interface 107 | (default "off") 108 | 109 | spi Set to "on" to enable the spi interfaces 110 | (default "off") 111 | 112 | random Set to "on" to enable the hardware random 113 | number generator (default "on") 114 | 115 | sd_overclock Clock (in MHz) to use when the MMC framework 116 | requests 50MHz 117 | 118 | sd_force_pio Disable DMA support for SD driver (default off) 119 | 120 | sd_pio_limit Number of blocks above which to use DMA for 121 | SD card (default 1) 122 | 123 | sd_debug Enable debug output from SD driver (default off) 124 | 125 | uart0 Set to "off" to disable uart0 (default "on") 126 | 127 | uart1 Set to "on" or "off" to enable or disable uart1 128 | (default varies) 129 | 130 | watchdog Set to "on" to enable the hardware watchdog 131 | (default "off") 132 | 133 | act_led_trigger Choose which activity the LED tracks. 134 | Use "heartbeat" for a nice load indicator. 135 | (default "mmc") 136 | 137 | act_led_activelow Set to "on" to invert the sense of the LED 138 | (default "off") 139 | N.B. For Pi3 see pi3-act-led overlay. 140 | 141 | act_led_gpio Set which GPIO to use for the activity LED 142 | (in case you want to connect it to an external 143 | device) 144 | (default "16" on a non-Plus board, "47" on a 145 | Plus or Pi 2) 146 | N.B. For Pi3 see pi3-act-led overlay. 147 | 148 | pwr_led_trigger 149 | pwr_led_activelow 150 | pwr_led_gpio 151 | As for act_led_*, but using the PWR LED. 152 | Not available on Model A/B boards. 153 | 154 | N.B. It is recommended to only enable those interfaces that are needed. 155 | Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc 156 | interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.) 157 | Note also that i2c, i2c_arm and i2c_vc are aliases for the physical 158 | interfaces i2c0 and i2c1. Use of the numeric variants is still possible 159 | but deprecated because the ARM/VC assignments differ between board 160 | revisions. The same board-specific mapping applies to i2c_baudrate, 161 | and the other i2c baudrate parameters. 162 | 163 | 164 | Name: adau1977-adc 165 | Info: Overlay for activation of ADAU1977 ADC codec over I2C for control 166 | and I2S for data. 167 | Load: dtoverlay=adau1977-adc 168 | Params: 169 | 170 | 171 | Name: adau7002-simple 172 | Info: Overlay for the activation of ADAU7002 stereo PDM to I2S converter. 173 | Load: dtoverlay=adau7002-simple,= 174 | Params: card-name Override the default, "adau7002", card name. 175 | 176 | 177 | Name: ads1015 178 | Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C 179 | Load: dtoverlay=ads1015,= 180 | Params: addr I2C bus address of device. Set based on how the 181 | addr pin is wired. (default=0x48 assumes addr 182 | is pulled to GND) 183 | cha_enable Enable virtual channel a. (default=true) 184 | cha_cfg Set the configuration for virtual channel a. 185 | (default=4 configures this channel for the 186 | voltage at A0 with respect to GND) 187 | cha_datarate Set the datarate (samples/sec) for this channel. 188 | (default=4 sets 1600 sps) 189 | cha_gain Set the gain of the Programmable Gain 190 | Amplifier for this channel. (default=2 sets the 191 | full scale of the channel to 2.048 Volts) 192 | 193 | Channel (ch) parameters can be set for each enabled channel. 194 | A maximum of 4 channels can be enabled (letters a thru d). 195 | For more information refer to the device datasheet at: 196 | http://www.ti.com/lit/ds/symlink/ads1015.pdf 197 | 198 | 199 | Name: ads1115 200 | Info: Texas Instruments ADS1115 ADC 201 | Load: dtoverlay=ads1115,[=] 202 | Params: addr I2C bus address of device. Set based on how the 203 | addr pin is wired. (default=0x48 assumes addr 204 | is pulled to GND) 205 | cha_enable Enable virtual channel a. 206 | cha_cfg Set the configuration for virtual channel a. 207 | (default=4 configures this channel for the 208 | voltage at A0 with respect to GND) 209 | cha_datarate Set the datarate (samples/sec) for this channel. 210 | (default=7 sets 860 sps) 211 | cha_gain Set the gain of the Programmable Gain 212 | Amplifier for this channel. (Default 1 sets the 213 | full scale of the channel to 4.096 Volts) 214 | 215 | Channel parameters can be set for each enabled channel. 216 | A maximum of 4 channels can be enabled (letters a thru d). 217 | For more information refer to the device datasheet at: 218 | http://www.ti.com/lit/ds/symlink/ads1115.pdf 219 | 220 | 221 | Name: ads7846 222 | Info: ADS7846 Touch controller 223 | Load: dtoverlay=ads7846,= 224 | Params: cs SPI bus Chip Select (default 1) 225 | speed SPI bus speed (default 2MHz, max 3.25MHz) 226 | penirq GPIO used for PENIRQ. REQUIRED 227 | penirq_pull Set GPIO pull (default 0=none, 2=pullup) 228 | swapxy Swap x and y axis 229 | xmin Minimum value on the X axis (default 0) 230 | ymin Minimum value on the Y axis (default 0) 231 | xmax Maximum value on the X axis (default 4095) 232 | ymax Maximum value on the Y axis (default 4095) 233 | pmin Minimum reported pressure value (default 0) 234 | pmax Maximum reported pressure value (default 65535) 235 | xohms Touchpanel sensitivity (X-plate resistance) 236 | (default 400) 237 | 238 | penirq is required and usually xohms (60-100) has to be set as well. 239 | Apart from that, pmax (255) and swapxy are also common. 240 | The rest of the calibration can be done with xinput-calibrator. 241 | See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian 242 | Device Tree binding document: 243 | www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt 244 | 245 | 246 | Name: akkordion-iqdacplus 247 | Info: Configures the Digital Dreamtime Akkordion Music Player (based on the 248 | OEM IQAudIO DAC+ or DAC Zero module). 249 | Load: dtoverlay=akkordion-iqdacplus,= 250 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 251 | Digital volume control. Enable with 252 | dtoverlay=akkordion-iqdacplus,24db_digital_gain 253 | (The default behaviour is that the Digital 254 | volume control is limited to a maximum of 255 | 0dB. ie. it can attenuate but not provide 256 | gain. For most users, this will be desired 257 | as it will prevent clipping. By appending 258 | the 24db_digital_gain parameter, the Digital 259 | volume control will allow up to 24dB of 260 | gain. If this parameter is enabled, it is the 261 | responsibility of the user to ensure that 262 | the Digital volume control is set to a value 263 | that does not result in clipping/distortion!) 264 | 265 | 266 | Name: allo-boss-dac-pcm512x-audio 267 | Info: Configures the Allo Boss DAC audio cards. 268 | Load: dtoverlay=allo-boss-dac-pcm512x-audio, 269 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 270 | Digital volume control. Enable with 271 | "dtoverlay=allo-boss-dac-pcm512x-audio, 272 | 24db_digital_gain" 273 | (The default behaviour is that the Digital 274 | volume control is limited to a maximum of 275 | 0dB. ie. it can attenuate but not provide 276 | gain. For most users, this will be desired 277 | as it will prevent clipping. By appending 278 | the 24db_digital_gain parameter, the Digital 279 | volume control will allow up to 24dB of 280 | gain. If this parameter is enabled, it is the 281 | responsibility of the user to ensure that 282 | the Digital volume control is set to a value 283 | that does not result in clipping/distortion!) 284 | slave Force Boss DAC into slave mode, using Pi a 285 | master for bit clock and frame clock. Enable 286 | with "dtoverlay=allo-boss-dac-pcm512x-audio, 287 | slave" 288 | 289 | 290 | Name: allo-digione 291 | Info: Configures the Allo Digione audio card 292 | Load: dtoverlay=allo-digione 293 | Params: 294 | 295 | 296 | Name: allo-piano-dac-pcm512x-audio 297 | Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. 298 | (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. 299 | The subwoofer outputs on the Piano 2.1 are not currently supported!) 300 | Load: dtoverlay=allo-piano-dac-pcm512x-audio, 301 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 302 | Digital volume control. 303 | (The default behaviour is that the Digital 304 | volume control is limited to a maximum of 305 | 0dB. ie. it can attenuate but not provide 306 | gain. For most users, this will be desired 307 | as it will prevent clipping. By appending 308 | the 24db_digital_gain parameter, the Digital 309 | volume control will allow up to 24dB of 310 | gain. If this parameter is enabled, it is the 311 | responsibility of the user to ensure that 312 | the Digital volume control is set to a value 313 | that does not result in clipping/distortion!) 314 | 315 | 316 | Name: allo-piano-dac-plus-pcm512x-audio 317 | Info: Configures the Allo Piano DAC (2.1) audio cards. 318 | Load: dtoverlay=allo-piano-dac-plus-pcm512x-audio, 319 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 320 | Digital volume control. 321 | (The default behaviour is that the Digital 322 | volume control is limited to a maximum of 323 | 0dB. ie. it can attenuate but not provide 324 | gain. For most users, this will be desired 325 | as it will prevent clipping. By appending 326 | the 24db_digital_gain parameter, the Digital 327 | volume control will allow up to 24dB of 328 | gain. If this parameter is enabled, it is the 329 | responsibility of the user to ensure that 330 | the Digital volume control is set to a value 331 | that does not result in clipping/distortion!) 332 | glb_mclk This option is only with Kali board. If enabled, 333 | MCLK for Kali is used and PLL is disabled for 334 | better voice quality. (default Off) 335 | 336 | 337 | Name: at86rf233 338 | Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, 339 | connected to spi0.0 340 | Load: dtoverlay=at86rf233,= 341 | Params: interrupt GPIO used for INT (default 23) 342 | reset GPIO used for Reset (default 24) 343 | sleep GPIO used for Sleep (default 25) 344 | speed SPI bus speed in Hz (default 3000000) 345 | trim Fine tuning of the internal capacitance 346 | arrays (0=+0pF, 15=+4.5pF, default 15) 347 | 348 | 349 | Name: audioinjector-addons 350 | Info: Configures the audioinjector.net audio add on soundcards 351 | Load: dtoverlay=audioinjector-addons 352 | Params: 353 | 354 | 355 | Name: audioinjector-wm8731-audio 356 | Info: Configures the audioinjector.net audio add on soundcard 357 | Load: dtoverlay=audioinjector-wm8731-audio 358 | Params: 359 | 360 | 361 | Name: audremap 362 | Info: Switches PWM sound output to pins 12 (Right) & 13 (Left) 363 | Load: dtoverlay=audremap,= 364 | Params: swap_lr Reverse the channel allocation, which will also 365 | swap the audio jack outputs (default off) 366 | enable_jack Don't switch off the audio jack output 367 | (default off) 368 | 369 | 370 | Name: bmp085_i2c-sensor 371 | Info: This overlay is now deprecated - see i2c-sensor 372 | Load: dtoverlay=bmp085_i2c-sensor 373 | Params: 374 | 375 | 376 | Name: dht11 377 | Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors 378 | Also sometimes found with the part number(s) AM230x. 379 | Load: dtoverlay=dht11,= 380 | Params: gpiopin GPIO connected to the sensor's DATA output. 381 | (default 4) 382 | 383 | 384 | Name: dionaudio-loco 385 | Info: Configures the Dion Audio LOCO DAC-AMP 386 | Load: dtoverlay=dionaudio-loco 387 | Params: 388 | 389 | 390 | Name: dionaudio-loco-v2 391 | Info: Configures the Dion Audio LOCO-V2 DAC-AMP 392 | Load: dtoverlay=dionaudio-loco-v2,= 393 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 394 | Digital volume control. Enable with 395 | "dtoverlay=hifiberry-dacplus,24db_digital_gain" 396 | (The default behaviour is that the Digital 397 | volume control is limited to a maximum of 398 | 0dB. ie. it can attenuate but not provide 399 | gain. For most users, this will be desired 400 | as it will prevent clipping. By appending 401 | the 24dB_digital_gain parameter, the Digital 402 | volume control will allow up to 24dB of 403 | gain. If this parameter is enabled, it is the 404 | responsibility of the user to ensure that 405 | the Digital volume control is set to a value 406 | that does not result in clipping/distortion!) 407 | 408 | 409 | Name: dpi18 410 | Info: Overlay for a generic 18-bit DPI display 411 | This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output 412 | 2-3 seconds after the kernel has started. 413 | Load: dtoverlay=dpi18 414 | Params: 415 | 416 | 417 | Name: dpi24 418 | Info: Overlay for a generic 24-bit DPI display 419 | This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output 420 | 2-3 seconds after the kernel has started. 421 | Load: dtoverlay=dpi24 422 | Params: 423 | 424 | 425 | Name: dwc-otg 426 | Info: Selects the dwc_otg USB controller driver which has fiq support. This 427 | is the default on all except the Pi Zero which defaults to dwc2. 428 | Load: dtoverlay=dwc-otg 429 | Params: 430 | 431 | 432 | Name: dwc2 433 | Info: Selects the dwc2 USB controller driver 434 | Load: dtoverlay=dwc2,= 435 | Params: dr_mode Dual role mode: "host", "peripheral" or "otg" 436 | 437 | g-rx-fifo-size Size of rx fifo size in gadget mode 438 | 439 | g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget 440 | mode 441 | 442 | 443 | [ The ds1307-rtc overlay has been deleted. See i2c-rtc. ] 444 | 445 | 446 | Name: enc28j60 447 | Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0 448 | Load: dtoverlay=enc28j60,= 449 | Params: int_pin GPIO used for INT (default 25) 450 | 451 | speed SPI bus speed (default 12000000) 452 | 453 | 454 | Name: enc28j60-spi2 455 | Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2 456 | Load: dtoverlay=enc28j60-spi2,= 457 | Params: int_pin GPIO used for INT (default 39) 458 | 459 | speed SPI bus speed (default 12000000) 460 | 461 | 462 | Name: fe-pi-audio 463 | Info: Configures the Fe-Pi Audio Sound Card 464 | Load: dtoverlay=fe-pi-audio 465 | Params: 466 | 467 | 468 | Name: goodix 469 | Info: Enables I2C connected Goodix gt9271 multiple touch controller using 470 | GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset. 471 | Load: dtoverlay=goodix,= 472 | Params: interrupt GPIO used for interrupt (default 4) 473 | reset GPIO used for reset (default 17) 474 | 475 | 476 | Name: googlevoicehat-soundcard 477 | Info: Configures the Google voiceHAT soundcard 478 | Load: dtoverlay=googlevoicehat-soundcard 479 | Params: 480 | 481 | 482 | Name: gpio-ir 483 | Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core- 484 | based gpio_ir_recv driver maps received keys directly to a 485 | /dev/input/event* device, all decoding is done by the kernel - LIRC is 486 | not required! The key mapping and other decoding parameters can be 487 | configured by "ir-keytable" tool. 488 | Load: dtoverlay=gpio-ir,= 489 | Params: gpio_pin Input pin number. Default is 18. 490 | 491 | gpio_pull Desired pull-up/down state (off, down, up) 492 | Default is "down". 493 | 494 | rc-map-name Default rc keymap (can also be changed by 495 | ir-keytable), defaults to "rc-rc6-mce" 496 | 497 | 498 | Name: gpio-poweroff 499 | Info: Drives a GPIO high or low on poweroff (including halt) 500 | Load: dtoverlay=gpio-poweroff,= 501 | Params: gpiopin GPIO for signalling (default 26) 502 | 503 | active_low Set if the power control device requires a 504 | high->low transition to trigger a power-down. 505 | Note that this will require the support of a 506 | custom dt-blob.bin to prevent a power-down 507 | during the boot process, and that a reboot 508 | will also cause the pin to go low. 509 | 510 | 511 | Name: gpio-shutdown 512 | Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin 513 | is configured as an input key that generates KEY_POWER events. 514 | This event is handled by systemd-logind by initiating a 515 | shutdown. Systemd versions older than 225 need an udev rule 516 | enable listening to the input device: 517 | 518 | ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", \ 519 | SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", \ 520 | ATTRS{keys}=="116", TAG+="power-switch" 521 | 522 | This overlay only handles shutdown. After shutdown, the system 523 | can be powered up again by driving GPIO3 low. The default 524 | configuration uses GPIO3 with a pullup, so if you connect a 525 | button between GPIO3 and GND (pin 5 and 6 on the 40-pin header), 526 | you get a shutdown and power-up button. 527 | Load: dtoverlay=gpio-shutdown,= 528 | Params: gpio_pin GPIO pin to trigger on (default 3) 529 | 530 | active_low When this is 1 (active low), a falling 531 | edge generates a key down event and a 532 | rising edge generates a key up event. 533 | When this is 0 (active high), this is 534 | reversed. The default is 1 (active low). 535 | 536 | gpio_pull Desired pull-up/down state (off, down, up) 537 | Default is "up". 538 | 539 | Note that the default pin (GPIO3) has an 540 | external pullup. 541 | 542 | 543 | Name: hifiberry-amp 544 | Info: Configures the HifiBerry Amp and Amp+ audio cards 545 | Load: dtoverlay=hifiberry-amp 546 | Params: 547 | 548 | 549 | Name: hifiberry-dac 550 | Info: Configures the HifiBerry DAC audio card 551 | Load: dtoverlay=hifiberry-dac 552 | Params: 553 | 554 | 555 | Name: hifiberry-dacplus 556 | Info: Configures the HifiBerry DAC+ audio card 557 | Load: dtoverlay=hifiberry-dacplus,= 558 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 559 | Digital volume control. Enable with 560 | "dtoverlay=hifiberry-dacplus,24db_digital_gain" 561 | (The default behaviour is that the Digital 562 | volume control is limited to a maximum of 563 | 0dB. ie. it can attenuate but not provide 564 | gain. For most users, this will be desired 565 | as it will prevent clipping. By appending 566 | the 24dB_digital_gain parameter, the Digital 567 | volume control will allow up to 24dB of 568 | gain. If this parameter is enabled, it is the 569 | responsibility of the user to ensure that 570 | the Digital volume control is set to a value 571 | that does not result in clipping/distortion!) 572 | slave Force DAC+ Pro into slave mode, using Pi as 573 | master for bit clock and frame clock. 574 | 575 | 576 | Name: hifiberry-digi 577 | Info: Configures the HifiBerry Digi and Digi+ audio card 578 | Load: dtoverlay=hifiberry-digi 579 | Params: 580 | 581 | 582 | Name: hifiberry-digi-pro 583 | Info: Configures the HifiBerry Digi+ Pro audio card 584 | Load: dtoverlay=hifiberry-digi-pro 585 | Params: 586 | 587 | 588 | Name: hy28a 589 | Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics 590 | Default values match Texy's display shield 591 | Load: dtoverlay=hy28a,= 592 | Params: speed Display SPI bus speed 593 | 594 | rotate Display rotation {0,90,180,270} 595 | 596 | fps Delay between frame updates 597 | 598 | debug Debug output level {0-7} 599 | 600 | xohms Touchpanel sensitivity (X-plate resistance) 601 | 602 | resetgpio GPIO used to reset controller 603 | 604 | ledgpio GPIO used to control backlight 605 | 606 | 607 | Name: hy28b 608 | Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics 609 | Default values match Texy's display shield 610 | Load: dtoverlay=hy28b,= 611 | Params: speed Display SPI bus speed 612 | 613 | rotate Display rotation {0,90,180,270} 614 | 615 | fps Delay between frame updates 616 | 617 | debug Debug output level {0-7} 618 | 619 | xohms Touchpanel sensitivity (X-plate resistance) 620 | 621 | resetgpio GPIO used to reset controller 622 | 623 | ledgpio GPIO used to control backlight 624 | 625 | 626 | Name: i2c-bcm2708 627 | Info: Fall back to the i2c_bcm2708 driver for the i2c_arm bus. 628 | Load: dtoverlay=i2c-bcm2708 629 | Params: 630 | 631 | 632 | Name: i2c-gpio 633 | Info: Adds support for software i2c controller on gpio pins 634 | Load: dtoverlay=i2c-gpio,= 635 | Params: i2c_gpio_sda GPIO used for I2C data (default "23") 636 | 637 | i2c_gpio_scl GPIO used for I2C clock (default "24") 638 | 639 | i2c_gpio_delay_us Clock delay in microseconds 640 | (default "2" = ~100kHz) 641 | 642 | 643 | Name: i2c-mux 644 | Info: Adds support for a number of I2C bus multiplexers on i2c_arm 645 | Load: dtoverlay=i2c-mux,= 646 | Params: pca9542 Select the NXP PCA9542 device 647 | 648 | pca9545 Select the NXP PCA9545 device 649 | 650 | pca9548 Select the NXP PCA9548 device 651 | 652 | addr Change I2C address of the device (default 0x70) 653 | 654 | 655 | [ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ] 656 | 657 | 658 | Name: i2c-pwm-pca9685a 659 | Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm 660 | Load: dtoverlay=i2c-pwm-pca9685a,= 661 | Params: addr I2C address of PCA9685A (default 0x40) 662 | 663 | 664 | Name: i2c-rtc 665 | Info: Adds support for a number of I2C Real Time Clock devices 666 | Load: dtoverlay=i2c-rtc,= 667 | Params: abx80x Select one of the ABx80x family: 668 | AB0801, AB0803, AB0804, AB0805, 669 | AB1801, AB1803, AB1804, AB1805 670 | 671 | ds1307 Select the DS1307 device 672 | 673 | ds1339 Select the DS1339 device 674 | 675 | ds3231 Select the DS3231 device 676 | 677 | mcp7940x Select the MCP7940x device 678 | 679 | mcp7941x Select the MCP7941x device 680 | 681 | pcf2127 Select the PCF2127 device 682 | 683 | pcf8523 Select the PCF8523 device 684 | 685 | pcf8563 Select the PCF8563 device 686 | 687 | trickle-diode-type Diode type for trickle charge - "standard" or 688 | "schottky" (ABx80x only) 689 | 690 | trickle-resistor-ohms Resistor value for trickle charge (DS1339, 691 | ABx80x) 692 | 693 | wakeup-source Specify that the RTC can be used as a wakeup 694 | source 695 | 696 | 697 | Name: i2c-rtc-gpio 698 | Info: Adds support for a number of I2C Real Time Clock devices 699 | using the software i2c controller 700 | Load: dtoverlay=i2c-rtc-gpio,= 701 | Params: abx80x Select one of the ABx80x family: 702 | AB0801, AB0803, AB0804, AB0805, 703 | AB1801, AB1803, AB1804, AB1805 704 | 705 | ds1307 Select the DS1307 device 706 | 707 | ds1339 Select the DS1339 device 708 | 709 | ds3231 Select the DS3231 device 710 | 711 | mcp7940x Select the MCP7940x device 712 | 713 | mcp7941x Select the MCP7941x device 714 | 715 | pcf2127 Select the PCF2127 device 716 | 717 | pcf8523 Select the PCF8523 device 718 | 719 | pcf8563 Select the PCF8563 device 720 | 721 | trickle-diode-type Diode type for trickle charge - "standard" or 722 | "schottky" (ABx80x only) 723 | 724 | trickle-resistor-ohms Resistor value for trickle charge (DS1339, 725 | ABx80x) 726 | 727 | wakeup-source Specify that the RTC can be used as a wakeup 728 | source 729 | 730 | i2c_gpio_sda GPIO used for I2C data (default "23") 731 | 732 | i2c_gpio_scl GPIO used for I2C clock (default "24") 733 | 734 | i2c_gpio_delay_us Clock delay in microseconds 735 | (default "2" = ~100kHz) 736 | 737 | 738 | Name: i2c-sensor 739 | Info: Adds support for a number of I2C barometric pressure and temperature 740 | sensors on i2c_arm 741 | Load: dtoverlay=i2c-sensor,= 742 | Params: addr Set the address for the BME280, BMP280, TMP102 743 | or LM75 744 | 745 | bme280 Select the Bosch Sensortronic BME280 746 | Valid addresses 0x76-0x77, default 0x76 747 | 748 | bmp085 Select the Bosch Sensortronic BMP085 749 | 750 | bmp180 Select the Bosch Sensortronic BMP180 751 | 752 | bmp280 Select the Bosch Sensortronic BMP280 753 | Valid addresses 0x76-0x77, default 0x76 754 | 755 | htu21 Select the HTU21 temperature and humidity sensor 756 | 757 | lm75 Select the Maxim LM75 temperature sensor 758 | Valid addresses 0x48-0x4f, default 0x4f 759 | 760 | lm75addr Deprecated - use addr parameter instead 761 | 762 | si7020 Select the Silicon Labs Si7013/20/21 humidity/ 763 | temperature sensor 764 | 765 | tmp102 Select the Texas Instruments TMP102 temp sensor 766 | Valid addresses 0x48-0x4b, default 0x48 767 | 768 | 769 | Name: i2c0-bcm2708 770 | Info: Enable the i2c_bcm2708 driver for the i2c0 bus. Not all pin combinations 771 | are usable on all platforms. 772 | Load: dtoverlay=i2c0-bcm2708,= 773 | Params: sda0_pin GPIO pin for SDA0 (deprecated - use pins_*) 774 | scl0_pin GPIO pin for SCL0 (deprecated - use pins_*) 775 | pins_0_1 Use pins 0 and 1 (default) 776 | pins_28_29 Use pins 28 and 29 777 | pins_44_45 Use pins 44 and 45 778 | pins_46_47 Use pins 46 and 47 779 | 780 | 781 | Name: i2c1-bcm2708 782 | Info: Enable the i2c_bcm2708 driver for the i2c1 bus 783 | Load: dtoverlay=i2c1-bcm2708,= 784 | Params: sda1_pin GPIO pin for SDA1 (2 or 44 - default 2) 785 | scl1_pin GPIO pin for SCL1 (3 or 45 - default 3) 786 | pin_func Alternative pin function (4 (alt0), 6 (alt2) - 787 | default 4) 788 | 789 | 790 | Name: i2s-gpio28-31 791 | Info: move I2S function block to GPIO 28 to 31 792 | Load: dtoverlay=i2s-gpio28-31 793 | Params: 794 | 795 | 796 | Name: iqaudio-dac 797 | Info: Configures the IQaudio DAC audio card 798 | Load: dtoverlay=iqaudio-dac, 799 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 800 | Digital volume control. Enable with 801 | "dtoverlay=iqaudio-dac,24db_digital_gain" 802 | (The default behaviour is that the Digital 803 | volume control is limited to a maximum of 804 | 0dB. ie. it can attenuate but not provide 805 | gain. For most users, this will be desired 806 | as it will prevent clipping. By appending 807 | the 24db_digital_gain parameter, the Digital 808 | volume control will allow up to 24dB of 809 | gain. If this parameter is enabled, it is the 810 | responsibility of the user to ensure that 811 | the Digital volume control is set to a value 812 | that does not result in clipping/distortion!) 813 | 814 | 815 | Name: iqaudio-dacplus 816 | Info: Configures the IQaudio DAC+ audio card 817 | Load: dtoverlay=iqaudio-dacplus,= 818 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 819 | Digital volume control. Enable with 820 | "dtoverlay=iqaudio-dacplus,24db_digital_gain" 821 | (The default behaviour is that the Digital 822 | volume control is limited to a maximum of 823 | 0dB. ie. it can attenuate but not provide 824 | gain. For most users, this will be desired 825 | as it will prevent clipping. By appending 826 | the 24db_digital_gain parameter, the Digital 827 | volume control will allow up to 24dB of 828 | gain. If this parameter is enabled, it is the 829 | responsibility of the user to ensure that 830 | the Digital volume control is set to a value 831 | that does not result in clipping/distortion!) 832 | auto_mute_amp If specified, unmute/mute the IQaudIO amp when 833 | starting/stopping audio playback. 834 | unmute_amp If specified, unmute the IQaudIO amp once when 835 | the DAC driver module loads. 836 | 837 | 838 | Name: iqaudio-digi-wm8804-audio 839 | Info: Configures the IQAudIO Digi WM8804 audio card 840 | Load: dtoverlay=iqaudio-digi-wm8804-audio,= 841 | Params: card_name Override the default, "IQAudIODigi", card name. 842 | dai_name Override the default, "IQAudIO Digi", dai name. 843 | dai_stream_name Override the default, "IQAudIO Digi HiFi", 844 | dai stream name. 845 | 846 | 847 | Name: justboom-dac 848 | Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio 849 | cards 850 | Load: dtoverlay=justboom-dac,= 851 | Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec 852 | Digital volume control. Enable with 853 | "dtoverlay=justboom-dac,24db_digital_gain" 854 | (The default behaviour is that the Digital 855 | volume control is limited to a maximum of 856 | 0dB. ie. it can attenuate but not provide 857 | gain. For most users, this will be desired 858 | as it will prevent clipping. By appending 859 | the 24dB_digital_gain parameter, the Digital 860 | volume control will allow up to 24dB of 861 | gain. If this parameter is enabled, it is the 862 | responsibility of the user to ensure that 863 | the Digital volume control is set to a value 864 | that does not result in clipping/distortion!) 865 | 866 | 867 | Name: justboom-digi 868 | Info: Configures the JustBoom Digi HAT and Digi Zero audio cards 869 | Load: dtoverlay=justboom-digi 870 | Params: 871 | 872 | 873 | Name: lirc-rpi 874 | Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi) 875 | Consult the module documentation for more details. 876 | Load: dtoverlay=lirc-rpi,= 877 | Params: gpio_out_pin GPIO for output (default "17") 878 | 879 | gpio_in_pin GPIO for input (default "18") 880 | 881 | gpio_in_pull Pull up/down/off on the input pin 882 | (default "down") 883 | 884 | sense Override the IR receive auto-detection logic: 885 | "0" = force active-high 886 | "1" = force active-low 887 | "-1" = use auto-detection 888 | (default "-1") 889 | 890 | softcarrier Turn the software carrier "on" or "off" 891 | (default "on") 892 | 893 | invert "on" = invert the output pin (default "off") 894 | 895 | debug "on" = enable additional debug messages 896 | (default "off") 897 | 898 | 899 | Name: mcp23017 900 | Info: Configures the MCP23017 I2C GPIO expander 901 | Load: dtoverlay=mcp23017,= 902 | Params: gpiopin Gpio pin connected to the INTA output of the 903 | MCP23017 (default: 4) 904 | 905 | addr I2C address of the MCP23017 (default: 0x20) 906 | 907 | 908 | Name: mcp23s17 909 | Info: Configures the MCP23S08/17 SPI GPIO expanders. 910 | If devices are present on SPI1 or SPI2, those interfaces must be enabled 911 | with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. 912 | If interrupts are enabled for a device on a given CS# on a SPI bus, that 913 | device must be the only one present on that SPI bus/CS#. 914 | Load: dtoverlay=mcp23s17,= 915 | Params: s08-spi--present 4-bit integer, bitmap indicating MCP23S08 916 | devices present on SPI, CS# 917 | 918 | s17-spi--present 8-bit integer, bitmap indicating MCP23S17 919 | devices present on SPI, CS# 920 | 921 | s08-spi--int-gpio integer, enables interrupts on a single 922 | MCP23S08 device on SPI, CS#, specifies 923 | the GPIO pin to which INT output of MCP23S08 924 | is connected. 925 | 926 | s17-spi--int-gpio integer, enables mirrored interrupts on a 927 | single MCP23S17 device on SPI, CS#, 928 | specifies the GPIO pin to which either INTA 929 | or INTB output of MCP23S17 is connected. 930 | 931 | 932 | Name: mcp2515-can0 933 | Info: Configures the MCP2515 CAN controller on spi0.0 934 | Load: dtoverlay=mcp2515-can0,= 935 | Params: oscillator Clock frequency for the CAN controller (Hz) 936 | 937 | spimaxfrequency Maximum SPI frequence (Hz) 938 | 939 | interrupt GPIO for interrupt signal 940 | 941 | 942 | Name: mcp2515-can1 943 | Info: Configures the MCP2515 CAN controller on spi0.1 944 | Load: dtoverlay=mcp2515-can1,= 945 | Params: oscillator Clock frequency for the CAN controller (Hz) 946 | 947 | spimaxfrequency Maximum SPI frequence (Hz) 948 | 949 | interrupt GPIO for interrupt signal 950 | 951 | 952 | Name: mcp3008 953 | Info: Configures MCP3008 A/D converters 954 | For devices on spi1 or spi2, the interfaces should be enabled 955 | with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. 956 | Load: dtoverlay=mcp3008,[=] 957 | Params: spi--present boolean, configure device at spi, cs 958 | spi--speed integer, set the spi bus speed for this device 959 | 960 | 961 | Name: midi-uart0 962 | Info: Configures UART0 (ttyAMA0) so that a requested 38.4kbaud actually gets 963 | 31.25kbaud, the frequency required for MIDI 964 | Load: dtoverlay=midi-uart0 965 | Params: 966 | 967 | 968 | Name: midi-uart1 969 | Info: Configures UART1 (ttyS0) so that a requested 38.4kbaud actually gets 970 | 31.25kbaud, the frequency required for MIDI 971 | Load: dtoverlay=midi-uart1 972 | Params: 973 | 974 | 975 | Name: mmc 976 | Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock 977 | Load: dtoverlay=mmc,= 978 | Params: overclock_50 Clock (in MHz) to use when the MMC framework 979 | requests 50MHz 980 | 981 | 982 | Name: mpu6050 983 | Info: Overlay for i2c connected mpu6050 imu 984 | Load: dtoverlay=mpu6050,= 985 | Params: interrupt GPIO pin for interrupt (default 4) 986 | 987 | 988 | Name: mz61581 989 | Info: MZ61581 display by Tontec 990 | Load: dtoverlay=mz61581,= 991 | Params: speed Display SPI bus speed 992 | 993 | rotate Display rotation {0,90,180,270} 994 | 995 | fps Delay between frame updates 996 | 997 | txbuflen Transmit buffer length (default 32768) 998 | 999 | debug Debug output level {0-7} 1000 | 1001 | xohms Touchpanel sensitivity (X-plate resistance) 1002 | 1003 | 1004 | Name: papirus 1005 | Info: PaPiRus ePaper Screen by Pi Supply (both HAT and pHAT) 1006 | Load: dtoverlay=papirus,= 1007 | Params: panel Display panel (required): 1008 | 1.44": e1144cs021 1009 | 2.0": e2200cs021 1010 | 2.7": e2271cs021 1011 | 1012 | speed Display SPI bus speed 1013 | 1014 | 1015 | [ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ] 1016 | 1017 | 1018 | [ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ] 1019 | 1020 | 1021 | [ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ] 1022 | 1023 | 1024 | Name: pi3-act-led 1025 | Info: Pi3 uses a GPIO expander to drive the LEDs which can only be accessed 1026 | from the VPU. There is a special driver for this with a separate DT 1027 | node, which has the unfortunate consequence of breaking the 1028 | act_led_gpio and act_led_activelow dtparams. 1029 | This overlay changes the GPIO controller back to the standard one and 1030 | restores the dtparams. 1031 | Load: dtoverlay=pi3-act-led,= 1032 | Params: activelow Set to "on" to invert the sense of the LED 1033 | (default "off") 1034 | 1035 | gpio Set which GPIO to use for the activity LED 1036 | (in case you want to connect it to an external 1037 | device) 1038 | REQUIRED 1039 | 1040 | 1041 | Name: pi3-disable-bt 1042 | Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15 1043 | N.B. To disable the systemd service that initialises the modem so it 1044 | doesn't use the UART, use 'sudo systemctl disable hciuart'. 1045 | Load: dtoverlay=pi3-disable-bt 1046 | Params: 1047 | 1048 | 1049 | Name: pi3-disable-wifi 1050 | Info: Disable Pi3 onboard WiFi 1051 | Load: dtoverlay=pi3-disable-wifi 1052 | Params: 1053 | 1054 | 1055 | Name: pi3-miniuart-bt 1056 | Info: Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore 1057 | UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum 1058 | usable baudrate. 1059 | N.B. It is also necessary to edit /lib/systemd/system/hciuart.service 1060 | and replace ttyAMA0 with ttyS0, unless you have a system with udev rules 1061 | that create /dev/serial0 and /dev/serial1, in which case use 1062 | /dev/serial1 instead because it will always be correct. Furthermore, 1063 | you must also set core_freq=250 in config.txt or the miniuart will not 1064 | work. 1065 | Load: dtoverlay=pi3-miniuart-bt 1066 | Params: 1067 | 1068 | 1069 | Name: piscreen 1070 | Info: PiScreen display by OzzMaker.com 1071 | Load: dtoverlay=piscreen,= 1072 | Params: speed Display SPI bus speed 1073 | 1074 | rotate Display rotation {0,90,180,270} 1075 | 1076 | fps Delay between frame updates 1077 | 1078 | debug Debug output level {0-7} 1079 | 1080 | xohms Touchpanel sensitivity (X-plate resistance) 1081 | 1082 | 1083 | Name: piscreen2r 1084 | Info: PiScreen 2 with resistive TP display by OzzMaker.com 1085 | Load: dtoverlay=piscreen2r,= 1086 | Params: speed Display SPI bus speed 1087 | 1088 | rotate Display rotation {0,90,180,270} 1089 | 1090 | fps Delay between frame updates 1091 | 1092 | debug Debug output level {0-7} 1093 | 1094 | xohms Touchpanel sensitivity (X-plate resistance) 1095 | 1096 | 1097 | Name: pisound 1098 | Info: Configures the Blokas Labs pisound card 1099 | Load: dtoverlay=pisound 1100 | Params: 1101 | 1102 | 1103 | Name: pitft22 1104 | Info: Adafruit PiTFT 2.2" screen 1105 | Load: dtoverlay=pitft22,= 1106 | Params: speed Display SPI bus speed 1107 | 1108 | rotate Display rotation {0,90,180,270} 1109 | 1110 | fps Delay between frame updates 1111 | 1112 | debug Debug output level {0-7} 1113 | 1114 | 1115 | Name: pitft28-capacitive 1116 | Info: Adafruit PiTFT 2.8" capacitive touch screen 1117 | Load: dtoverlay=pitft28-capacitive,= 1118 | Params: speed Display SPI bus speed 1119 | 1120 | rotate Display rotation {0,90,180,270} 1121 | 1122 | fps Delay between frame updates 1123 | 1124 | debug Debug output level {0-7} 1125 | 1126 | touch-sizex Touchscreen size x (default 240) 1127 | 1128 | touch-sizey Touchscreen size y (default 320) 1129 | 1130 | touch-invx Touchscreen inverted x axis 1131 | 1132 | touch-invy Touchscreen inverted y axis 1133 | 1134 | touch-swapxy Touchscreen swapped x y axis 1135 | 1136 | 1137 | Name: pitft28-resistive 1138 | Info: Adafruit PiTFT 2.8" resistive touch screen 1139 | Load: dtoverlay=pitft28-resistive,= 1140 | Params: speed Display SPI bus speed 1141 | 1142 | rotate Display rotation {0,90,180,270} 1143 | 1144 | fps Delay between frame updates 1145 | 1146 | debug Debug output level {0-7} 1147 | 1148 | 1149 | Name: pitft35-resistive 1150 | Info: Adafruit PiTFT 3.5" resistive touch screen 1151 | Load: dtoverlay=pitft35-resistive,= 1152 | Params: speed Display SPI bus speed 1153 | 1154 | rotate Display rotation {0,90,180,270} 1155 | 1156 | fps Delay between frame updates 1157 | 1158 | debug Debug output level {0-7} 1159 | 1160 | 1161 | Name: pps-gpio 1162 | Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). 1163 | Load: dtoverlay=pps-gpio,= 1164 | Params: gpiopin Input GPIO (default "18") 1165 | assert_falling_edge When present, assert is indicated by a falling 1166 | edge, rather than by a rising edge 1167 | 1168 | 1169 | Name: pwm 1170 | Info: Configures a single PWM channel 1171 | Legal pin,function combinations for each channel: 1172 | PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) 1173 | PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) 1174 | N.B.: 1175 | 1) Pin 18 is the only one available on all platforms, and 1176 | it is the one used by the I2S audio interface. 1177 | Pins 12 and 13 might be better choices on an A+, B+ or Pi2. 1178 | 2) The onboard analogue audio output uses both PWM channels. 1179 | 3) So be careful mixing audio and PWM. 1180 | 4) Currently the clock must have been enabled and configured 1181 | by other means. 1182 | Load: dtoverlay=pwm,= 1183 | Params: pin Output pin (default 18) - see table 1184 | func Pin function (default 2 = Alt5) - see above 1185 | clock PWM clock frequency (informational) 1186 | 1187 | 1188 | Name: pwm-2chan 1189 | Info: Configures both PWM channels 1190 | Legal pin,function combinations for each channel: 1191 | PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) 1192 | PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) 1193 | N.B.: 1194 | 1) Pin 18 is the only one available on all platforms, and 1195 | it is the one used by the I2S audio interface. 1196 | Pins 12 and 13 might be better choices on an A+, B+ or Pi2. 1197 | 2) The onboard analogue audio output uses both PWM channels. 1198 | 3) So be careful mixing audio and PWM. 1199 | 4) Currently the clock must have been enabled and configured 1200 | by other means. 1201 | Load: dtoverlay=pwm-2chan,= 1202 | Params: pin Output pin (default 18) - see table 1203 | pin2 Output pin for other channel (default 19) 1204 | func Pin function (default 2 = Alt5) - see above 1205 | func2 Function for pin2 (default 2 = Alt5) 1206 | clock PWM clock frequency (informational) 1207 | 1208 | 1209 | Name: qca7000 1210 | Info: I2SE's Evaluation Board for PLC Stamp micro 1211 | Load: dtoverlay=qca7000,= 1212 | Params: int_pin GPIO pin for interrupt signal (default 23) 1213 | 1214 | speed SPI bus speed (default 12 MHz) 1215 | 1216 | 1217 | Name: raspidac3 1218 | Info: Configures the RaspiDAV Rev.3x audio card 1219 | Load: dtoverlay=raspidac3 1220 | Params: 1221 | 1222 | 1223 | Name: rotary-encoder 1224 | Info: Overlay for GPIO connected rotary encoder. 1225 | Load: dtoverlay=rotary-encoder,= 1226 | Params: rotary0_pin_a GPIO connected to rotary encoder channel A 1227 | (default 4). 1228 | rotary0_pin_b GPIO connected to rotary encoder channel B 1229 | (default 17). 1230 | 1231 | 1232 | Name: rpi-backlight 1233 | Info: Raspberry Pi official display backlight driver 1234 | Load: dtoverlay=rpi-backlight 1235 | Params: 1236 | 1237 | 1238 | Name: rpi-cirrus-wm5102 1239 | Info: Configures the Cirrus Logic Audio Card 1240 | Load: dtoverlay=rpi-cirrus-wm5102 1241 | Params: 1242 | 1243 | 1244 | Name: rpi-dac 1245 | Info: Configures the RPi DAC audio card 1246 | Load: dtoverlay=rpi-dac 1247 | Params: 1248 | 1249 | 1250 | Name: rpi-display 1251 | Info: RPi-Display - 2.8" Touch Display by Watterott 1252 | Load: dtoverlay=rpi-display,= 1253 | Params: speed Display SPI bus speed 1254 | rotate Display rotation {0,90,180,270} 1255 | fps Delay between frame updates 1256 | debug Debug output level {0-7} 1257 | xohms Touchpanel sensitivity (X-plate resistance) 1258 | swapxy Swap x and y axis 1259 | 1260 | 1261 | Name: rpi-ft5406 1262 | Info: Official Raspberry Pi display touchscreen 1263 | Load: dtoverlay=rpi-ft5406 1264 | Params: 1265 | 1266 | 1267 | Name: rpi-proto 1268 | Info: Configures the RPi Proto audio card 1269 | Load: dtoverlay=rpi-proto 1270 | Params: 1271 | 1272 | 1273 | Name: rpi-sense 1274 | Info: Raspberry Pi Sense HAT 1275 | Load: dtoverlay=rpi-sense 1276 | Params: 1277 | 1278 | 1279 | Name: rpi-tv 1280 | Info: Raspberry Pi TV HAT 1281 | Load: dtoverlay=rpi-tv 1282 | Params: 1283 | 1284 | 1285 | Name: rra-digidac1-wm8741-audio 1286 | Info: Configures the Red Rocks Audio DigiDAC1 soundcard 1287 | Load: dtoverlay=rra-digidac1-wm8741-audio 1288 | Params: 1289 | 1290 | 1291 | Name: sc16is750-i2c 1292 | Info: Overlay for the NXP SC16IS750 UART with I2C Interface 1293 | Enables the chip on I2C1 at 0x48. To select another address, 1294 | please refer to table 10 in reference manual. 1295 | 1296 | Load: dtoverlay=sc16is750-i2c,= 1297 | Params: int_pin GPIO used for IRQ (default 24) 1298 | addr Address (default 0x48) 1299 | 1300 | 1301 | Name: sc16is752-spi1 1302 | Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface 1303 | Enables the chip on SPI1. 1304 | N.B.: spi1 is only accessible on devices with a 40pin header, eg: 1305 | A+, B+, Zero and PI2 B; as well as the Compute Module. 1306 | 1307 | Load: dtoverlay=sc16is752-spi1,= 1308 | Params: int_pin GPIO used for IRQ (default 24) 1309 | 1310 | 1311 | Name: sdhost 1312 | Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock. 1313 | N.B. This overlay is designed for situations where the mmc driver is 1314 | the default, so it disables the other (mmc) interface - this will kill 1315 | WiFi on a Pi3. If this isn't what you want, either use the sdtweak 1316 | overlay or the new sd_* dtparams of the base DTBs. 1317 | Load: dtoverlay=sdhost,= 1318 | Params: overclock_50 Clock (in MHz) to use when the MMC framework 1319 | requests 50MHz 1320 | 1321 | force_pio Disable DMA support (default off) 1322 | 1323 | pio_limit Number of blocks above which to use DMA 1324 | (default 1) 1325 | 1326 | debug Enable debug output (default off) 1327 | 1328 | 1329 | Name: sdio 1330 | Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock, 1331 | and enables SDIO via GPIOs 22-27. 1332 | Load: dtoverlay=sdio,= 1333 | Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC 1334 | framework requests 50MHz 1335 | 1336 | poll_once Disable SDIO-device polling every second 1337 | (default on: polling once at boot-time) 1338 | 1339 | bus_width Set the SDIO host bus width (default 4 bits) 1340 | 1341 | 1342 | Name: sdio-1bit 1343 | Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock, 1344 | and enables 1-bit SDIO via GPIOs 22-25. 1345 | Load: dtoverlay=sdio-1bit,= 1346 | Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC 1347 | framework requests 50MHz 1348 | 1349 | poll_once Disable SDIO-device polling every second 1350 | (default on: polling once at boot-time) 1351 | 1352 | 1353 | Name: sdtweak 1354 | Info: Tunes the bcm2835-sdhost SD/MMC driver 1355 | N.B. This functionality is now available via the sd_* dtparams in the 1356 | base DTB. 1357 | Load: dtoverlay=sdtweak,= 1358 | Params: overclock_50 Clock (in MHz) to use when the MMC framework 1359 | requests 50MHz 1360 | 1361 | force_pio Disable DMA support (default off) 1362 | 1363 | pio_limit Number of blocks above which to use DMA 1364 | (default 1) 1365 | 1366 | debug Enable debug output (default off) 1367 | 1368 | 1369 | Name: smi 1370 | Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25! 1371 | Load: dtoverlay=smi 1372 | Params: 1373 | 1374 | 1375 | Name: smi-dev 1376 | Info: Enables the userspace interface for the SMI driver 1377 | Load: dtoverlay=smi-dev 1378 | Params: 1379 | 1380 | 1381 | Name: smi-nand 1382 | Info: Enables access to NAND flash via the SMI interface 1383 | Load: dtoverlay=smi-nand 1384 | Params: 1385 | 1386 | 1387 | Name: spi-gpio35-39 1388 | Info: Move SPI function block to GPIO 35 to 39 1389 | Load: dtoverlay=spi-gpio35-39 1390 | Params: 1391 | 1392 | 1393 | Name: spi-rtc 1394 | Info: Adds support for a number of SPI Real Time Clock devices 1395 | Load: dtoverlay=spi-rtc,= 1396 | Params: pcf2123 Select the PCF2123 device 1397 | 1398 | 1399 | Name: spi0-cs 1400 | Info: Allows the (software) CS pins for SPI0 to be changed 1401 | Load: dtoverlay=spi0-cs,= 1402 | Params: cs0_pin GPIO pin for CS0 (default 8) 1403 | cs1_pin GPIO pin for CS1 (default 7) 1404 | 1405 | 1406 | Name: spi0-hw-cs 1407 | Info: Re-enables hardware CS/CE (chip selects) for SPI0 1408 | Load: dtoverlay=spi0-hw-cs 1409 | Params: 1410 | 1411 | 1412 | Name: spi1-1cs 1413 | Info: Enables spi1 with a single chip select (CS) line and associated spidev 1414 | dev node. The gpio pin number for the CS line and spidev device node 1415 | creation are configurable. 1416 | N.B.: spi1 is only accessible on devices with a 40pin header, eg: 1417 | A+, B+, Zero and PI2 B; as well as the Compute Module. 1418 | Load: dtoverlay=spi1-1cs,= 1419 | Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0). 1420 | cs0_spidev Set to 'disabled' to stop the creation of a 1421 | userspace device node /dev/spidev1.0 (default 1422 | is 'okay' or enabled). 1423 | 1424 | 1425 | Name: spi1-2cs 1426 | Info: Enables spi1 with two chip select (CS) lines and associated spidev 1427 | dev nodes. The gpio pin numbers for the CS lines and spidev device node 1428 | creation are configurable. 1429 | N.B.: spi1 is only accessible on devices with a 40pin header, eg: 1430 | A+, B+, Zero and PI2 B; as well as the Compute Module. 1431 | Load: dtoverlay=spi1-2cs,= 1432 | Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0). 1433 | cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1). 1434 | cs0_spidev Set to 'disabled' to stop the creation of a 1435 | userspace device node /dev/spidev1.0 (default 1436 | is 'okay' or enabled). 1437 | cs1_spidev Set to 'disabled' to stop the creation of a 1438 | userspace device node /dev/spidev1.1 (default 1439 | is 'okay' or enabled). 1440 | 1441 | 1442 | Name: spi1-3cs 1443 | Info: Enables spi1 with three chip select (CS) lines and associated spidev 1444 | dev nodes. The gpio pin numbers for the CS lines and spidev device node 1445 | creation are configurable. 1446 | N.B.: spi1 is only accessible on devices with a 40pin header, eg: 1447 | A+, B+, Zero and PI2 B; as well as the Compute Module. 1448 | Load: dtoverlay=spi1-3cs,= 1449 | Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0). 1450 | cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1). 1451 | cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2). 1452 | cs0_spidev Set to 'disabled' to stop the creation of a 1453 | userspace device node /dev/spidev1.0 (default 1454 | is 'okay' or enabled). 1455 | cs1_spidev Set to 'disabled' to stop the creation of a 1456 | userspace device node /dev/spidev1.1 (default 1457 | is 'okay' or enabled). 1458 | cs2_spidev Set to 'disabled' to stop the creation of a 1459 | userspace device node /dev/spidev1.2 (default 1460 | is 'okay' or enabled). 1461 | 1462 | 1463 | Name: spi2-1cs 1464 | Info: Enables spi2 with a single chip select (CS) line and associated spidev 1465 | dev node. The gpio pin number for the CS line and spidev device node 1466 | creation are configurable. 1467 | N.B.: spi2 is only accessible with the Compute Module. 1468 | Load: dtoverlay=spi2-1cs,= 1469 | Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0). 1470 | cs0_spidev Set to 'disabled' to stop the creation of a 1471 | userspace device node /dev/spidev2.0 (default 1472 | is 'okay' or enabled). 1473 | 1474 | 1475 | Name: spi2-2cs 1476 | Info: Enables spi2 with two chip select (CS) lines and associated spidev 1477 | dev nodes. The gpio pin numbers for the CS lines and spidev device node 1478 | creation are configurable. 1479 | N.B.: spi2 is only accessible with the Compute Module. 1480 | Load: dtoverlay=spi2-2cs,= 1481 | Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0). 1482 | cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1). 1483 | cs0_spidev Set to 'disabled' to stop the creation of a 1484 | userspace device node /dev/spidev2.0 (default 1485 | is 'okay' or enabled). 1486 | cs1_spidev Set to 'disabled' to stop the creation of a 1487 | userspace device node /dev/spidev2.1 (default 1488 | is 'okay' or enabled). 1489 | 1490 | 1491 | Name: spi2-3cs 1492 | Info: Enables spi2 with three chip select (CS) lines and associated spidev 1493 | dev nodes. The gpio pin numbers for the CS lines and spidev device node 1494 | creation are configurable. 1495 | N.B.: spi2 is only accessible with the Compute Module. 1496 | Load: dtoverlay=spi2-3cs,= 1497 | Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0). 1498 | cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1). 1499 | cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2). 1500 | cs0_spidev Set to 'disabled' to stop the creation of a 1501 | userspace device node /dev/spidev2.0 (default 1502 | is 'okay' or enabled). 1503 | cs1_spidev Set to 'disabled' to stop the creation of a 1504 | userspace device node /dev/spidev2.1 (default 1505 | is 'okay' or enabled). 1506 | cs2_spidev Set to 'disabled' to stop the creation of a 1507 | userspace device node /dev/spidev2.2 (default 1508 | is 'okay' or enabled). 1509 | 1510 | 1511 | Name: tinylcd35 1512 | Info: 3.5" Color TFT Display by www.tinylcd.com 1513 | Options: Touch, RTC, keypad 1514 | Load: dtoverlay=tinylcd35,= 1515 | Params: speed Display SPI bus speed 1516 | 1517 | rotate Display rotation {0,90,180,270} 1518 | 1519 | fps Delay between frame updates 1520 | 1521 | debug Debug output level {0-7} 1522 | 1523 | touch Enable touch panel 1524 | 1525 | touchgpio Touch controller IRQ GPIO 1526 | 1527 | xohms Touchpanel: Resistance of X-plate in ohms 1528 | 1529 | rtc-pcf PCF8563 Real Time Clock 1530 | 1531 | rtc-ds DS1307 Real Time Clock 1532 | 1533 | keypad Enable keypad 1534 | 1535 | Examples: 1536 | Display with touchpanel, PCF8563 RTC and keypad: 1537 | dtoverlay=tinylcd35,touch,rtc-pcf,keypad 1538 | Old touch display: 1539 | dtoverlay=tinylcd35,touch,touchgpio=3 1540 | 1541 | 1542 | Name: uart1 1543 | Info: Enable uart1 in place of uart0 1544 | Load: dtoverlay=uart1,= 1545 | Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14) 1546 | 1547 | rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15) 1548 | 1549 | 1550 | Name: vc4-fkms-v3d 1551 | Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx 1552 | display stack. 1553 | Load: dtoverlay=vc4-fkms-v3d, 1554 | Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB) 1555 | cma-192 CMA is 192MB, 256MB-aligned (needs 1GB) 1556 | cma-128 CMA is 128MB, 128MB-aligned 1557 | cma-96 CMA is 96MB, 128MB-aligned 1558 | cma-64 CMA is 64MB, 64MB-aligned 1559 | 1560 | 1561 | Name: vc4-kms-v3d 1562 | Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or 1563 | booting to GUI while this overlay is in use will cause interesting 1564 | lockups. 1565 | Load: dtoverlay=vc4-kms-v3d, 1566 | Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB) 1567 | cma-192 CMA is 192MB, 256MB-aligned (needs 1GB) 1568 | cma-128 CMA is 128MB, 128MB-aligned 1569 | cma-96 CMA is 96MB, 128MB-aligned 1570 | cma-64 CMA is 64MB, 64MB-aligned 1571 | 1572 | 1573 | Name: vga666 1574 | Info: Overlay for the Fen Logic VGA666 board 1575 | This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds 1576 | after the kernel has started. 1577 | Load: dtoverlay=vga666 1578 | Params: 1579 | 1580 | 1581 | Name: w1-gpio 1582 | Info: Configures the w1-gpio Onewire interface module. 1583 | Use this overlay if you *don't* need a GPIO to drive an external pullup. 1584 | Load: dtoverlay=w1-gpio,= 1585 | Params: gpiopin GPIO for I/O (default "4") 1586 | 1587 | pullup Non-zero, "on", or "y" to enable the parasitic 1588 | power (2-wire, power-on-data) feature 1589 | 1590 | 1591 | Name: w1-gpio-pullup 1592 | Info: Configures the w1-gpio Onewire interface module. 1593 | Use this overlay if you *do* need a GPIO to drive an external pullup. 1594 | Load: dtoverlay=w1-gpio-pullup,= 1595 | Params: gpiopin GPIO for I/O (default "4") 1596 | 1597 | pullup Non-zero, "on", or "y" to enable the parasitic 1598 | power (2-wire, power-on-data) feature 1599 | 1600 | extpullup GPIO for external pullup (default "5") 1601 | 1602 | 1603 | Name: wittypi 1604 | Info: Configures the wittypi RTC module. 1605 | Load: dtoverlay=wittypi,= 1606 | Params: led_gpio GPIO for LED (default "17") 1607 | led_trigger Choose which activity the LED tracks (default 1608 | "default-on") 1609 | 1610 | 1611 | Troubleshooting 1612 | =============== 1613 | 1614 | If you are experiencing problems that you think are DT-related, enable DT 1615 | diagnostic output by adding this to /boot/config.txt: 1616 | 1617 | dtdebug=on 1618 | 1619 | and rebooting. Then run: 1620 | 1621 | sudo vcdbg log msg 1622 | 1623 | and look for relevant messages. 1624 | 1625 | Further reading 1626 | =============== 1627 | 1628 | This is only meant to be a quick introduction to the subject of Device Tree on 1629 | Raspberry Pi. There is a more complete explanation here: 1630 | 1631 | http://www.raspberrypi.org/documentation/configuration/device-tree.md 1632 | -------------------------------------------------------------------------------- /sdcard/overlays/adau1977-adc.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/adau1977-adc.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/adau7002-simple.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/adau7002-simple.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/ads1015.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/ads1015.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/ads1115.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/ads1115.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/ads7846.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/ads7846.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/akkordion-iqdacplus.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/akkordion-iqdacplus.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/allo-boss-dac-pcm512x-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/allo-boss-dac-pcm512x-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/allo-digione.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/allo-digione.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/allo-piano-dac-pcm512x-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/allo-piano-dac-pcm512x-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/at86rf233.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/at86rf233.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/audioinjector-addons.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/audioinjector-addons.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/audioinjector-wm8731-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/audioinjector-wm8731-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/audremap.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/audremap.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/bmp085_i2c-sensor.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/bmp085_i2c-sensor.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dht11.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dht11.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dionaudio-loco-v2.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dionaudio-loco-v2.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dionaudio-loco.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dionaudio-loco.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dpi18.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dpi18.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dpi24.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dpi24.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dwc-otg.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dwc-otg.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/dwc2.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/dwc2.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/enc28j60-spi2.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/enc28j60-spi2.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/enc28j60.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/enc28j60.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/fe-pi-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/fe-pi-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/goodix.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/goodix.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/googlevoicehat-soundcard.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/googlevoicehat-soundcard.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/gpio-ir.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/gpio-ir.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/gpio-poweroff.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/gpio-poweroff.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/gpio-shutdown.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/gpio-shutdown.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hifiberry-amp.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hifiberry-amp.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hifiberry-dac.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hifiberry-dac.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hifiberry-dacplus.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hifiberry-dacplus.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hifiberry-digi-pro.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hifiberry-digi-pro.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hifiberry-digi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hifiberry-digi.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hy28a.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hy28a.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/hy28b.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/hy28b.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-bcm2708.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-bcm2708.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-gpio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-gpio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-mux.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-mux.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-pwm-pca9685a.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-pwm-pca9685a.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-rtc-gpio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-rtc-gpio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-rtc.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-rtc.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c-sensor.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c-sensor.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c0-bcm2708.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c0-bcm2708.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2c1-bcm2708.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2c1-bcm2708.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/i2s-gpio28-31.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/i2s-gpio28-31.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/iqaudio-dac.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/iqaudio-dac.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/iqaudio-dacplus.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/iqaudio-dacplus.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/iqaudio-digi-wm8804-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/iqaudio-digi-wm8804-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/justboom-dac.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/justboom-dac.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/justboom-digi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/justboom-digi.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/lirc-rpi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/lirc-rpi.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mcp23017.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mcp23017.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mcp23s17.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mcp23s17.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mcp2515-can0.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mcp2515-can0.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mcp2515-can1.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mcp2515-can1.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mcp3008.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mcp3008.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/midi-uart0.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/midi-uart0.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/midi-uart1.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/midi-uart1.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mmc.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mmc.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mpu6050.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mpu6050.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/mz61581.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/mz61581.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/papirus.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/papirus.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pi3-act-led.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pi3-act-led.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pi3-disable-bt.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pi3-disable-bt.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pi3-disable-wifi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pi3-disable-wifi.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pi3-miniuart-bt.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pi3-miniuart-bt.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/piscreen.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/piscreen.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/piscreen2r.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/piscreen2r.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pisound.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pisound.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pitft22.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pitft22.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pitft28-capacitive.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pitft28-capacitive.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pitft28-resistive.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pitft28-resistive.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pitft35-resistive.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pitft35-resistive.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pps-gpio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pps-gpio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pwm-2chan.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pwm-2chan.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/pwm.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/pwm.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/qca7000.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/qca7000.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/raspidac3.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/raspidac3.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rotary-encoder.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rotary-encoder.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-backlight.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-backlight.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-cirrus-wm5102.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-cirrus-wm5102.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-dac.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-dac.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-display.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-display.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-ft5406.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-ft5406.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-proto.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-proto.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-sense.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-sense.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rpi-tv.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rpi-tv.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/rra-digidac1-wm8741-audio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/rra-digidac1-wm8741-audio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sc16is750-i2c.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sc16is750-i2c.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sc16is752-spi1.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sc16is752-spi1.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sdhost.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sdhost.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sdio-1bit.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sdio-1bit.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sdio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sdio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/sdtweak.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/sdtweak.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/smi-dev.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/smi-dev.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/smi-nand.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/smi-nand.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/smi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/smi.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi-gpio35-39.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi-gpio35-39.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi-rtc.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi-rtc.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi0-cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi0-cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi0-hw-cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi0-hw-cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi1-1cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi1-1cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi1-2cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi1-2cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi1-3cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi1-3cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi2-1cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi2-1cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi2-2cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi2-2cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/spi2-3cs.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/spi2-3cs.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/tinylcd35.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/tinylcd35.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/uart1.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/uart1.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/vc4-fkms-v3d.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/vc4-fkms-v3d.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/vc4-kms-v3d.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/vc4-kms-v3d.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/vga666.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/vga666.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/w1-gpio-pullup.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/w1-gpio-pullup.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/w1-gpio.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/w1-gpio.dtbo -------------------------------------------------------------------------------- /sdcard/overlays/wittypi.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/overlays/wittypi.dtbo -------------------------------------------------------------------------------- /sdcard/serial_mode: -------------------------------------------------------------------------------- 1 | debug -------------------------------------------------------------------------------- /sdcard/settings.txt: -------------------------------------------------------------------------------- 1 | [Code] 2 | autoreload=true 3 | # deploy - unimplemented 4 | deploy=false 5 | 6 | [System] 7 | hostname=piratepython 8 | password=p1r4t3 9 | 10 | [Network] 11 | # enabled 12 | # true = enable wifi 13 | # false = disable wifi 14 | enabled=true 15 | 16 | # mode 17 | # wifi = connect to a wifi network defined in wpa_supplicant.conf 18 | # ap = set up a wifi access point with the name/password defined in wpa_supplicant_ap.conf 19 | mode=wifi 20 | 21 | [Bluetooth] 22 | # enabled - unimplemented 23 | enabled=false 24 | 25 | [USB] 26 | # Set ethernet mode, can be windows or linux/OSX 27 | # ethernet - unimplemented 28 | ethernet=windows -------------------------------------------------------------------------------- /sdcard/start.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/start.elf -------------------------------------------------------------------------------- /sdcard/start_cd.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/start_cd.elf -------------------------------------------------------------------------------- /sdcard/start_db.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/start_db.elf -------------------------------------------------------------------------------- /sdcard/start_x.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/sdcard/start_x.elf -------------------------------------------------------------------------------- /sdcard/versions.txt: -------------------------------------------------------------------------------- 1 | automationhat==0.0.4 2 | blinkt==0.1.0 3 | Cap1xxx==0.1.3 4 | click==6.6 5 | colorama==0.3.7 6 | drumhat==0.0.5 7 | envirophat==0.0.6 8 | evdev==0.7.0 9 | ExplorerHAT==0.4.2 10 | Flask==0.12.1 11 | fourletterphat==0.0.2 12 | gpiozero==1.4.0 13 | itsdangerous==0.24 14 | Jinja2==2.8 15 | MarkupSafe==0.23 16 | motephat==0.0.2 17 | netifaces==0.10.4 18 | numpy==1.12.1 19 | pantilthat==0.0.4 20 | phatbeat==0.0.2 21 | pianohat==0.0.5 22 | picamera==1.13 23 | Pillow==4.0.0 24 | rainbowhat==0.0.2 25 | rpi-ws281x==3.0.3 26 | RPi.GPIO==0.6.3 27 | scrollphat==0.0.7 28 | scrollphathd==1.0.1 29 | six==1.10.0 30 | sn3218==1.2.7 31 | spidev==3.0 32 | touchphat==0.0.1 33 | unicornhat==2.2.3 34 | unicornhathd==0.0.3 35 | Werkzeug==0.11.15 36 | zeroconf==0.17.6 37 | -------------------------------------------------------------------------------- /sdcard/wpa_supplicant.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 2 | update_config=1 3 | country=GB 4 | 5 | network={ 6 | ssid="" 7 | psk="" 8 | key_mgmt=WPA-PSK 9 | } -------------------------------------------------------------------------------- /sdcard/wpa_supplicant_ap.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 2 | update_config=1 3 | country=GB 4 | 5 | network={ 6 | mode=2 7 | ssid="PiratePython" 8 | psk="p1r4t3pyth0n" 9 | key_mgmt=WPA-PSK 10 | } -------------------------------------------------------------------------------- /source/raspbian/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ROOTDIR=root 4 | NEW_USER=pirate 5 | NEW_PASS=`mkpasswd -m sha-512 p1r4t3` 6 | NEW_HOST=piratepython 7 | MYCHROOT="proot -0 -q qemu-arm-static -w / -r" 8 | 9 | export QEMU_LD_PREFIX=$(readlink -f $ROOTDIR) 10 | export APT_HTTP_PROXY=http://localhost:3142 11 | 12 | #rm -rf --one-file-system $ROOTDIR 13 | 14 | mkdir -p $ROOTDIR/receipts 15 | 16 | if [ ! -f "$ROOTDIR/receipts/multistrap" ]; then 17 | http_proxy=$APT_HTTP_PROXY /usr/sbin/multistrap -d $ROOTDIR -f multistrap.conf 18 | 19 | touch $ROOTDIR/receipts/multistrap 20 | fi 21 | 22 | # If you want to use fakeroot/fakechroot for some reason, 23 | # you will need to install them in multistrap.conf. 24 | 25 | if [ ! -f "$ROOTDIR/receipts/preinstall-scripts" ]; then 26 | echo "Running preinst scripts..." 27 | 28 | for script in $ROOTDIR/var/lib/dpkg/info/*.preinst; do 29 | [ "$script" = "$ROOTDIR/var/lib/dpkg/info/vpnc.preinst" ] && continue 30 | echo "I: run preinst script ${script##$ROOTDIR}" 31 | DPKG_MAINTSCRIPT_NAME=preinst \ 32 | DPKG_MAINTSCRIPT_PACKAGE="`basename $script .preinst`" \ 33 | $MYCHROOT $ROOTDIR ${script##$ROOTDIR} install 34 | done 35 | 36 | touch $ROOTDIR/receipts/preinstall-scripts 37 | fi 38 | 39 | echo "" 40 | echo "" 41 | echo "Running dpkg --configure -a" 42 | 43 | echo "- don't run makedev" 44 | # don't run makedev 45 | # we will create device nodes later, after we are done with the system dev 46 | rm -f $ROOTDIR/var/lib/dpkg/info/makedev.postinst 47 | 48 | echo "- copy keyring" 49 | # work around https://pad.lv/1727874 50 | rm -f $ROOTDIR/var/lib/dpkg/info/raspbian-archive-keyring.postinst 51 | ln -sf /usr/share/keyrings/raspbian-archive-keyring.gpg $ROOTDIR/etc/apt/trusted.gpg.d/ 52 | 53 | echo "- work around PAM error" 54 | # work around PAM error 55 | ln -sf /bin/true $ROOTDIR/usr/bin/chfn 56 | 57 | echo "- mount /dev/urandom" 58 | # mount /dev/urandom for dropbear key generation 59 | touch $ROOTDIR/dev/urandom 60 | sudo mount -o bind /dev/urandom $ROOTDIR/dev/urandom 61 | 62 | if [ ! -f $ROOTDIR/receipts/dpkg-configure ]; then 63 | echo "- run dpkg --configure" 64 | # run dpkg --configure 65 | DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ 66 | LC_ALL=C LANGUAGE=C LANG=C $MYCHROOT $ROOTDIR /usr/bin/dpkg --configure -a || true 67 | touch $ROOTDIR/receipts/dpkg-configure 68 | else 69 | echo "- skipping dpkg --configure" 70 | fi 71 | 72 | echo "" 73 | echo "" 74 | echo "Preparing root..." 75 | 76 | # no root password 77 | $MYCHROOT $ROOTDIR passwd -d root 78 | 79 | # reset default udev persistent-net rule 80 | rm -f $ROOTDIR/etc/udev/rules.d/*_persistent-net.rules 81 | 82 | # /etc/resolv.conf symlink 83 | rm -f $ROOTDIR/etc/resolv.conf 84 | $MYCHROOT $ROOTDIR ln -sf "/run/systemd/resolve/resolv.conf" "/etc/resolv.conf" 85 | 86 | echo "- remove dropbear init script" 87 | # junk dropbear init script 88 | rm -f $ROOTDIR/etc/init.d/dropbear 89 | 90 | echo "" 91 | echo "" 92 | echo "Copy files from fs/* into $ROOTDIR" 93 | 94 | cp -r fs/* $ROOTDIR 95 | 96 | echo "" 97 | echo "" 98 | echo "Setup systemd services" 99 | 100 | $MYCHROOT $ROOTDIR /bin/systemctl reenable systemd-networkd 101 | $MYCHROOT $ROOTDIR /bin/systemctl reenable systemd-resolved 102 | $MYCHROOT $ROOTDIR /bin/systemctl reenable systemd-timesyncd 103 | $MYCHROOT $ROOTDIR /bin/systemctl reenable systemd-networkd-wait-online.service 104 | $MYCHROOT $ROOTDIR /bin/systemctl reenable piratepython.service 105 | $MYCHROOT $ROOTDIR /bin/systemctl reenable dropbear.service 106 | $MYCHROOT $ROOTDIR /bin/systemctl reenable wpa_supplicant@wlan0.service 107 | $MYCHROOT $ROOTDIR /bin/systemctl reenable usb-gadget.service 108 | $MYCHROOT $ROOTDIR /bin/systemctl reenable getty@ttyGS1.service 109 | 110 | # time used by timesyncd if no other is available 111 | touch $ROOTDIR/var/lib/systemd/clock 112 | 113 | echo "Squash kernel messages" 114 | 115 | echo "kernel.printk = 3 4 1 3" >> $ROOTDIR/etc/sysctl.conf 116 | 117 | echo "" 118 | echo "" 119 | echo "Installing modules..." 120 | 121 | tar -xf ../kernel/kernel-root.tar.gz -C $ROOTDIR 122 | 123 | echo "run ldconfig" 124 | $ROOTDIR/sbin/ldconfig -r $ROOTDIR 125 | 126 | echo "Additional users..." 127 | 128 | if [ ! -f $ROOTDIR/receipts/addusers ]; then 129 | ./scripts/addusers.sh 130 | touch $ROOTDIR/receipts/addusers 131 | fi 132 | 133 | if [ ! -f $ROOTDIR/receipts/pipinstall ]; then 134 | ./scripts/pipinstall.sh 135 | touch $ROOTDIR/receipts/pipinstall 136 | fi 137 | 138 | echo "" 139 | echo "" 140 | echo "Links and busywork..." 141 | 142 | echo "Enable o-password sudo" 143 | # Dirty hack to enable no-password in sudo 144 | sed -i 's/ ALL/ NOPASSWD: ALL/g' $ROOTDIR/etc/sudoers 145 | 146 | echo "symlink some stuff for convinience" 147 | # Need to add /sbin to pirate's path 148 | $MYCHROOT $ROOTDIR ln -sf /sbin/ifconfig /usr/bin/ifconfig 149 | $MYCHROOT $ROOTDIR ln -sf /usr/bin/python3 /usr/bin/python 150 | $MYCHROOT $ROOTDIR ln -sf /usr/bin/pip3 /usr/bin/pip 151 | 152 | $MYCHROOT $ROOTDIR rm -f /usr/bin/perl 153 | $MYCHROOT $ROOTDIR ln -sf /usr/bin/perl5.24.1 /usr/bin/perl 154 | 155 | echo "Unmount /dev/urandom" 156 | sudo umount $ROOTDIR/dev/urandom 157 | rm -f $ROOTDIR/dev/urandom 158 | 159 | cp -a $ROOTDIR $ROOTDIR-dist 160 | 161 | ROOTDIR="$ROOTDIR-dist" 162 | 163 | rm -rf $ROOTDIR/receipts 164 | 165 | ./scripts/implode.sh 166 | 167 | ./scripts/final.sh 168 | 169 | ./scripts/packrootfs.sh 170 | -------------------------------------------------------------------------------- /source/raspbian/cleanup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import sys, fnmatch, os 4 | 5 | excludes = [] 6 | 7 | with open(sys.argv[2]) as excludefile: 8 | for line in excludefile: 9 | line = line.strip() 10 | if line.startswith('#'): 11 | continue 12 | x = line.split('=') 13 | if len(x) == 2: 14 | if x[0] == 'path-exclude': 15 | excludes.append((os.path.join(sys.argv[1], x[1][1:]), True)) 16 | elif x[0] == 'path-include': 17 | excludes.append((os.path.join(sys.argv[1], x[1][1:]), False)) 18 | 19 | def test_excludes(fname, excludes): 20 | delete = False 21 | for e in excludes: 22 | if fnmatch.fnmatchcase(fname, e[0]): 23 | delete = e[1] 24 | return delete 25 | 26 | for dirname, subdirs, files in os.walk(sys.argv[1], topdown=False): 27 | for fname in files: 28 | fname = os.path.join(dirname, fname) 29 | if test_excludes(fname, excludes): 30 | os.remove(fname) 31 | print fname 32 | for fname in subdirs: 33 | fname = os.path.join(dirname, fname) 34 | if test_excludes(fname, excludes): 35 | try: 36 | os.rmdir(fname) 37 | print fname 38 | except OSError: 39 | print fname, 'not empty, not removed.' 40 | -------------------------------------------------------------------------------- /source/raspbian/env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ROOTDIR=root 4 | 5 | export QEMU_LD_PREFIX=$(readlink -f $ROOTDIR) 6 | 7 | MYCHROOT="proot -0 -q qemu-arm-static -w / -r" 8 | -------------------------------------------------------------------------------- /source/raspbian/excludes.conf: -------------------------------------------------------------------------------- 1 | path-exclude=/usr/share/locale/* 2 | path-exclude=/usr/share/man/* 3 | path-exclude=/usr/share/info/* 4 | path-exclude=/usr/share/groff/* 5 | path-exclude=/usr/share/lintian/* 6 | path-exclude=/usr/share/linda/* 7 | path-exclude=/usr/share/doc/*/* 8 | path-include=/usr/share/doc/*/copyright 9 | path-exclude=/tmp/* 10 | path-exclude=/usr/share/sounds/alsa/* 11 | path-exclude=/lib/udev/cdrom_id 12 | path-exclude=/lib/udev/scsi_id 13 | 14 | path-exclude=/var/cache/apt* 15 | path-exclude=/var/cache/debconf* 16 | path-exclude=/var/lib/dpkg/* 17 | path-exclude=/var/log/apt/* 18 | 19 | # Python codecs we'll probably never use, but who knows! 20 | path-exclude=/usr/lib/python3.*/lib-dynload/_codecs_* 21 | path-include=/usr/lib/python3.*/lib-dynload/_codecs_iso2022* 22 | 23 | # wut? 24 | path-exclude=/usr/lib/python3/dist-packages/setuptools/*.exe 25 | path-exclude=/usr/lib/python3.5/idlelib/* 26 | 27 | # Numpy tests which wont run anyway 28 | path-exclude=/usr/lib/python3/dist-packages/numpy/*/tests/* 29 | path-exclude=/usr/lib/python3/dist-packages/*/testsuite/* 30 | path-exclude=/usr/lib/python3/dist-packages/*/tests/* 31 | 32 | path-exclude=/usr/bin/python3.*m 33 | path-exclude=/root/.cache/* 34 | 35 | # raspberry pi has no pci 36 | path-exclude=/lib/udev/hwdb.d/* 37 | path-exclude=/lib/udev/hwdb.d/20-pci* 38 | 39 | # strip out firmware except for the on-board wifi 40 | path-exclude=/lib/firmware/* 41 | path-exclude=/lib/firmware/brcm/* 42 | path-include=/lib/firmware/brcm/brcmfmac43430-sdio.* 43 | path-include=/lib/firmware/BCM43430A1.hcd 44 | 45 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/fstab: -------------------------------------------------------------------------------- 1 | /dev/mmcblk0p1 /boot auto ro,sync,dirsync,nosuid,nodev 0 0 2 | proc /proc proc defaults 0 0 3 | 4 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/hostapd.conf: -------------------------------------------------------------------------------- 1 | interface=wlan0 2 | ssid=PiratePython 3 | hw_mode=g 4 | channel=7 5 | wmm_enabled=0 6 | macaddr_acl=0 7 | auth_algs=1 8 | ignore_broadcast_ssid=0 9 | wpa=2 10 | wpa_passphrase=p1r4t3python 11 | wpa_key_mgmt=WPA-PSK 12 | wpa_pairwise=TKIP 13 | rsn_pairwise=CCMP 14 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/hostname: -------------------------------------------------------------------------------- 1 | piratepython 2 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 localhost 2 | 127.0.0.1 piratepython 3 | 4 | # The following lines are desirable for IPv6 capable hosts 5 | ::1 ip6-localhost ip6-loopback 6 | fe00::0 ip6-localnet 7 | ff00::0 ip6-mcastprefix 8 | ff02::1 ip6-allnodes 9 | ff02::2 ip6-allrouters 10 | ff02::3 ip6-allhosts 11 | 12 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/issue: -------------------------------------------------------------------------------- 1 | 2 | ▄███████▄ ▄█ ▄████████ ▄████████ ███ ▄████████ 3 | ███ ███ ███ ███ ███ ███ ███ ▀█████████▄ ███ ███ 4 | ███ ███ ███▌ ███ ███ ███ ███ ▀███▀▀██ ███ █▀ 5 | ███ ███ ███▌ ▄███▄▄▄▄██▀ ███ ███ ███ ▀ ▄███▄▄▄ 6 | ▀█████████▀ ███▌ ▀▀███▀▀▀██ ▀███████████ ███ ▀▀███▀▀▀ 7 | ███ ███ ███ ██▄ ███ ███ ███ ███ █▄ 8 | ███ ███ ███ ███ ███ ███ ███ ███ ███ 9 | ▄████▀ █▀ ███ ███ ███ █▀ ▄████▀ ██████████ 10 | ▄ ▀█ ███ 11 | ▄███████▄ ▄██ ▄ ███ ▄█ █▄ ▄██████▄ ███▄▄▄▄ 12 | ███ ███ ███ ██▄ ▀█████████▄ ███ ███ ███ ███ ███▀▀▀██▄ 13 | ███ ███ ███▄▄▄███ ▀███▀▀██ ███ ███ ███ ███ ███ ███ 14 | ███ ███ ▀▀▀▀▀▀███ ███ ▀ ▄███▄▄▄▄███▄ ███ ███ ███ ███ 15 | ▀█████████▀ ▄██ ███ ███ ▀▀███▀▀▀▀███ ███ ███ ███ ███ 16 | ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ 17 | ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ 18 | ▄████▀ ▀█████▀ ▄████▀ ███ █▀ ▀██████▀ ▀█ █▀ 19 | 20 | Pirate Python Alpha (Raspbian Stretch) - \n \l 21 | 22 | IP Address: \4{wlan0} 23 | 24 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/profile.d/resize.sh: -------------------------------------------------------------------------------- 1 | resize() { 2 | old=$(stty -g) 3 | stty raw -echo min 0 time 5 4 | printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty 5 | IFS='[;R' read -r _ rows cols _ < /dev/tty 6 | stty "$old" 7 | echo "Resizing terminal to $cols x $rows" 8 | stty cols "$cols" rows "$rows" 9 | } 10 | if [ $(tty) = /dev/ttyGS0 ] || [ $(tty) = /dev/ttyAMA0 ]; then 11 | resize 12 | fi 13 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/network/en.network: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=en* 3 | [Network] 4 | DHCP=yes 5 | 6 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/network/wlan.network: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=wlan* 3 | [Network] 4 | DHCP=yes 5 | 6 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/dhcpd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=DHCP Server 3 | After=hostapd.service sys-subsystem-net-devices-wlan0.device 4 | BindsTo=sys-subsystem-net-devices-wlan0.device 5 | 6 | [Service] 7 | Type=forking 8 | PIDFile=/run/udhcpd.pid 9 | ExecStart=/bin/udhcpd /etc/udhcpd.conf 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/dropbear.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Dropbear SSH Server 3 | After=network.target 4 | 5 | [Service] 6 | Type=forking 7 | ExecStart=/usr/sbin/dropbear -g 8 | PIDFile=/var/run/dropbear.pid 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | 13 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/piratepython.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Pirathon Python Runner 3 | After=multiuser.target usb-gadget.service 4 | Requires=local-fs.target 5 | 6 | [Install] 7 | WantedBy=default.target 8 | 9 | [Service] 10 | Restart=always 11 | Type=simple 12 | PrivateTmp=false 13 | ExecStart=/sbin/piratepython 14 | ExecStop=/sbin/piratepython stop 15 | 16 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/usb-gadget.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Create USB Gadget 3 | 4 | [Service] 5 | Type=oneshot 6 | ExecStart=/sbin/piratepython-usb 7 | StandardInput=tty 8 | RemainAfterExit=yes 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/wpa_supplicant@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=WPA supplicant daemon (interface-specific version) 3 | Requires=sys-subsystem-net-devices-%i.device 4 | After=sys-subsystem-net-devices-%i.device 5 | Before=network.target 6 | Wants=network.target 7 | Conflicts=wpa_supplicant_ap@%i.service 8 | 9 | [Service] 10 | Type=simple 11 | ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I 12 | 13 | [Install] 14 | Alias=multi-user.target.wants/wpa_supplicant@%i.service 15 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/systemd/system/wpa_supplicant_ap@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=WPA supplicant daemon (access-point mode | interface-specific version) 3 | Requires=sys-subsystem-net-devices-%i.device 4 | After=sys-subsystem-net-devices-%i.device 5 | Before=network.target 6 | Wants=network.target 7 | Conflicts=wpa_supplicant@%i.service 8 | 9 | [Service] 10 | Type=simple 11 | ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant_ap-%I.conf -Dnl80211,wext -i%I 12 | 13 | [Install] 14 | Alias=multi-user.target.wants/wpa_supplicant_ap@%i.service 15 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/udhcpd.conf: -------------------------------------------------------------------------------- 1 | start 10.0.3.20 2 | end 10.0.3.254 3 | interface wlan0 4 | opt dns 8.8.8.8 8.8.4.4 5 | opt subnet 255.255.255.0 6 | opt router 10.0.3.1 7 | opt domain local 8 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/wpa_supplicant/wpa_supplicant-wlan0.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 2 | update_config=1 3 | country=GB 4 | 5 | network={ 6 | ssid="" 7 | psk="" 8 | key_mgmt=WPA-PSK 9 | } 10 | -------------------------------------------------------------------------------- /source/raspbian/fs/etc/wpa_supplicant/wpa_supplicant_ap-wlan0.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 2 | update_config=1 3 | country=GB 4 | 5 | network={ 6 | mode=2 7 | ssid="PiratePython" 8 | psk="p1r4t3pyth0n" 9 | key_mgmt=WPA-PSK 10 | } 11 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PP_PID=$$ 4 | 5 | PIDFILE="/tmp/piratepython.pid" 6 | PYTHONPIDFILE="/tmp/piratepython.python.pid" 7 | 8 | BOOT_LOG="/home/pirate/boot.log" 9 | 10 | PYTHON_LOG="/home/pirate/python.log" 11 | PYTHON_TTY="/dev/ttyGS0" 12 | PYTHON_OUTPUT="$PYTHON_LOG $PYTHON_TTY" 13 | 14 | PYTHON_PID=-1 15 | 16 | GS0_MODE="debug" 17 | GS1_MODE="terminal" 18 | 19 | # Some default settings for the settings.txt file 20 | CODE_AUTORELOAD=true 21 | CODE_DEPLOY=false 22 | 23 | SYSTEM_HOSTNAME="piratepython" 24 | SYSTEM_PASSWORD="p1r4t3" 25 | 26 | NETWORK_ENABLED=true 27 | NETWORK_MODE="wifi" 28 | 29 | BLUETOOTH_ENABLED=false 30 | 31 | USB_ETHERNET="windows" 32 | 33 | # Block multiple instances 34 | if [ -f "$PIDFILE" ]; then 35 | PID=`cat $PIDFILE` 36 | kill -0 $PID 37 | RESULT=$? 38 | if [ $RESULT -eq 0 ]; then 39 | if [ "$1" == "stop" ]; then 40 | echo "Stopping existing PiratePython process! PID: $PID" 41 | PPID=`cat $PYTHONPIDFILE` 42 | kill -0 $PPID 43 | RESULT=$? 44 | if [ $RESULT -eq 0 ]; then 45 | echo "Stopping python child! PID: $PID" 46 | kill $PPID 47 | fi 48 | rm -f $PIDFILE 49 | rm -f $PYTHONPIDFILE 50 | kill $PID 51 | exit $? 52 | else 53 | echo "Existing PiratePython process running? PID: $PID" 54 | exit 1 55 | fi 56 | fi 57 | rm -f $PIDFILE 58 | rm -rf $PYTHONPIDFILE 59 | fi 60 | 61 | chown -R pirate:pirate /home/pirate 62 | mount /boot 63 | 64 | # Wait for /boot 65 | while [ ! -f /boot/initrd ]; do sleep 1; done 66 | 67 | # Mount any package files 68 | if [ -d /boot/packages ]; then 69 | for f in /boot/packages/*.img; do 70 | filename=$(basename "$f") 71 | imagename="${filename%.*}" 72 | mountpoint="/opt/$imagename" 73 | mkdir -p $mountpoint 74 | mount $f $mountpoint 75 | cd $mountpoint 76 | ./init 77 | cd / 78 | done; 79 | fi; 80 | 81 | # Wait for USB 82 | while [ ! -d /sys/kernel/config/usb_gadget/g1 ]; do sleep 1; done 83 | 84 | # Wait for TTY 85 | while [ ! -c $PYTHON_TTY ]; do sleep 1; done 86 | 87 | if [ "$1" == "stop" ]; then 88 | echo "No existing PiratePython process found!" 89 | exit 0 90 | fi 91 | 92 | # Re-acquire existing Python PID 93 | if [ -f "$PYTHONPIDFILE" ]; then 94 | PPID=`cat $PYTHONPIDFILE` 95 | kill -0 $PPID 96 | RESULT=$? 97 | if [ $RESULT -eq 0 ]; then 98 | PYTHON_PID="$PPID" 99 | else 100 | rm -f $PYTHONPIDFILE 101 | fi 102 | fi 103 | 104 | echo "$PP_PID" > $PIDFILE 105 | 106 | function changed { 107 | diff /tmp/_$1 /tmp/$1 > /dev/null 2>&1 108 | if [ $? -eq 1 ]; then 109 | true 110 | else 111 | false 112 | fi 113 | } 114 | 115 | function update_settings { 116 | if changed "settings.txt"; then 117 | mv /tmp/_settings.txt /tmp/settings.txt 118 | /sbin/piratepython-configparse > /tmp/_settings.sh 119 | if [ "$?" == "0" ]; then 120 | mv /tmp/_settings.sh /tmp/settings.sh 121 | source /tmp/settings.sh 122 | 123 | if [ "$SYSTEM_HOSTNAME" != "" ]; then 124 | OLD_HOSTNAME=`cat /etc/hostname` 125 | if [ "$OLD_HOSTNAME" != "$SYSTEM_HOSTNAME" ]; then 126 | echo "Changing hostname from $OLD_HOSTNAME to $SYSTEM_HOSTNAME" 127 | sed -i "s/127.0.0.1\s\{1,\}$OLD_HOSTNAME/127.0.0.1\t$SYSTEM_HOSTNAME/" /etc/hosts 128 | echo "$SYSTEM_HOSTNAME" > /etc/hostname 129 | hostname "$SYSTEM_HOSTNAME" 130 | fi 131 | fi 132 | 133 | if [ "$SYSTEM_PASSWORD" != "" ]; then 134 | echo "pirate:$SYSTEM_PASSWORD" | chpasswd 135 | fi 136 | 137 | if [ ! $NETWORK_ENABLED ]; then 138 | systemctl stop dhcpd 139 | systemctl stop wpa_supplicant@wlan0 140 | systemctl stop wpa_supplicant_ap@wlan0 141 | ifconfig wlan0 down 142 | elif [ "$NETWORK_MODE" == "wifi" ]; then 143 | if ! systemctl is-active wpa_supplicant@wlan0 > /dev/null; then 144 | echo "Enabling Wifi: Client Mode" 145 | ifconfig wlan0 up 146 | systemctl stop dhcpd 147 | ifconfig wlan0 dynamic 148 | systemctl start wpa_supplicant@wlan0 149 | fi 150 | elif [ "$NETWORK_MODE" == "ap" ]; then 151 | if ! systemctl is-active wpa_supplicant_ap@wlan0 > /dev/null; then 152 | echo "Enabling WiFi: Access-point Mode" 153 | ifconfig wlan0 up 154 | systemctl start wpa_supplicant_ap@wlan0 155 | ifconfig wlan0 10.0.3.1 156 | systemctl start dhcpd 157 | fi 158 | fi 159 | fi 160 | fi 161 | } 162 | 163 | function update_mainpy { 164 | if changed "main.py"; then 165 | mv /tmp/_main.py /tmp/main.py 166 | launch_script 167 | fi 168 | } 169 | 170 | function update_configs { 171 | # Compare wpa_supplicant.conf to cached version, and update if needed 172 | if changed "wpa_supplicant.conf"; then 173 | cp /tmp/_wpa_supplicant.conf /tmp/wpa_supplicant.conf 174 | cp /tmp/_wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf 175 | if [ "`systemctl is-active wpa_supplicant@wlan0.service`" == "active" ]; then 176 | systemctl restart wpa_supplicant@wlan0 177 | fi 178 | fi 179 | 180 | if changed "wpa_supplicant_ap.conf"; then 181 | cp /tmp/_wpa_supplicant_ap.conf /tmp/wpa_supplicant_ap.conf 182 | cp /tmp/_wpa_supplicant_ap.conf /etc/wpa_supplicant/wpa_supplicant_ap-wlan0.conf 183 | if [ "`systemctl is-acive wpa_supplicant_ap@wlan0.service`" == "active" ]; then 184 | systemctl restart wpa_supplicant_ap@wlan0 185 | fi 186 | fi 187 | } 188 | 189 | function wait_for_change { 190 | while read -r action; do 191 | echo $action 192 | update_settings 193 | update_configs 194 | if $CODE_AUTORELOAD; then 195 | update_mainpy 196 | fi 197 | sleep 0.01 198 | done < <(PYTHONUNBUFFERED=1 /usr/bin/python3 /sbin/piratepython-sync) 199 | } 200 | 201 | function launch_script { 202 | echo "Relaunching /boot/main.py" 203 | 204 | if [ -f "$PYTHON_LOG" ]; then 205 | rm -f $PYTHON_LOG 206 | touch $PYTHON_LOG 207 | fi 208 | 209 | if [ ! $PYTHON_PID -eq -1 ]; then 210 | /bin/kill $PYTHON_PID 211 | fi 212 | 213 | PYTHON_OUTPUT="$PYTHON_LOG $PYTHON_TTY" 214 | timeout 0.1 bash -c "echo \"---------- Restarting main.py ----------\" > $PYTHON_TTY" 215 | RESULT=$? 216 | echo "Result: $RESULT" 217 | if [ $RESULT -eq 124 ]; then 218 | echo "Timeout on $PYTHON_TTY, using logfile" 219 | echo "Timeout on $PYTHON_TTY" > $PYTHON_LOG 220 | echo "---------- Restarting main.py ----------" > $PYTHON_LOG 221 | # ttyGS0 has timed out! 222 | PYTHON_OUTPUT="$PYTHON_LOG" 223 | fi 224 | PYTHONPATH=/boot/libraries PYTHONUNBUFFERED=1 /usr/bin/python3 /tmp/main.py > >( tee -a $PYTHON_OUTPUT > /dev/null 2>&1 ) 2>&1 & 225 | PYTHON_PID=$! 226 | echo "$PYTHON_PID" > $PYTHONPIDFILE 227 | } 228 | 229 | BOOT_OUTPUT="$BOOT_LOG $PYTHON_TTY" 230 | 231 | # Check to see if ttyGS0 is functional 232 | timeout 0.1 bash -c "echo \"Serial debug enabled!\" > $PYTHON_TTY" 233 | RESULT=$? 234 | echo "Result: $RESULT" 235 | if [ $RESULT -eq 124 ]; then 236 | echo "Timeout on $PYTHON_TTY, using logfile" 237 | echo "Timeout on $PYTHON_TTY" >> $BOOT_LOG 238 | # ttyGS0 has timed out! 239 | BOOT_OUTPUT="$BOOT_LOG" 240 | fi 241 | 242 | # Copy the localtime file if it exists 243 | if [ -f /boot/localtime ]; then 244 | cp /boot/localtime /etc/localtime 245 | echo "Using /boot/localtime, time: $(date)" | tee -a $BOOT_OUTPUT 246 | fi 247 | 248 | COPYTOTMP=( main.py settings.txt wpa_supplicant.conf wpa_supplicant_ap.conf ) 249 | 250 | for file in ${COPYTOTMP[@]}; do 251 | if [ -f /boot/$file ]; then 252 | cp /boot/$file /tmp/_$file 253 | touch /tmp/$file 254 | fi 255 | done 256 | 257 | update_configs 258 | update_settings 259 | 260 | # Check for, and run boot.sh 261 | if [ -f /boot/boot.sh ]; then 262 | bash /boot/boot.sh 2>&1 | tee -a $BOOT_OUTPUT 263 | fi 264 | 265 | # Check for, and run boot.py 266 | if [ -f /boot/boot.py ]; then 267 | PYTHONPATH=/boot/libraries PYTHONUNBUFFERED=1 /usr/bin/python3 /boot/boot.py 2>&1 | tee -a $BOOT_OUTPUT 268 | fi 269 | 270 | update_mainpy 271 | 272 | wait_for_change 273 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython-ap: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | action="$1" 3 | 4 | if [ "$action" == "start" ]; then 5 | echo "Starting access point mode..." 6 | systemctl start wpa_supplicant_ap@wlan0 7 | ifconfig wlan0 10.0.3.1 8 | systemctl start dhcpd.service 9 | exit 0 10 | fi 11 | 12 | if [ "$action" == "stop" ]; then 13 | echo "Stopping access point mode..." 14 | systemctl stop dhcpd.service 15 | ifconfig wlan0 dynamic 16 | systemctl start wpa_supplicant@wlan0 17 | exit 0 18 | fi 19 | 20 | echo "Unsupported action: $action" 21 | echo "Usage: piratepython-ap start|stop" 22 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython-configparse: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | CONFIGDIR = "/tmp/" 4 | 5 | import os 6 | from sys import exit 7 | import configparser 8 | 9 | config = configparser.ConfigParser() 10 | config.read(os.path.join(CONFIGDIR,"settings.txt")) 11 | 12 | if len(config.sections()) == 0: 13 | raise RuntimeError("Invalid settings.txt") 14 | 15 | for section in config.sections(): 16 | print("# {}".format(section)) 17 | for setting in config[section]: 18 | value = config[section].get(setting, None) 19 | if value is not None: 20 | if value not in ["true", "false"]: 21 | value = '"{}"'.format(value) 22 | print("{}_{}={}".format(section.upper(), setting.upper(), value)) 23 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython-mode: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | action="$1" 3 | 4 | if [ "$action" == "auto" ]; then 5 | echo "Starting PiratePython USB sync...." 6 | mount -o,remount,ro /boot 7 | systemctl start piratepython 8 | echo "/boot is read-only!" 9 | exit 0 10 | fi 11 | 12 | if [ "$action" == "manual" ]; then 13 | echo "Switching to PiratePython manual mode..." 14 | systemctl stop piratepython 15 | mount -o,remount,rw /boot 16 | echo "/boot is now writeable!" 17 | exit 0 18 | fi 19 | 20 | echo "Unsupported action: $action" 21 | echo "Usage: piratepython-mode auto|manual" 22 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython-sync: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import subprocess 4 | import threading 5 | import time 6 | import os 7 | import signal 8 | import sys 9 | 10 | proc = subprocess.Popen(["/bin/dmesg", "-w"], stdout=subprocess.PIPE) 11 | 12 | do_sync = False 13 | last_sync = time.time() + 1 14 | lock = threading.Lock() 15 | 16 | sync_only_mode = False 17 | running = True 18 | 19 | def wait_for_sync(): 20 | global do_sync, sync_only_mode 21 | for line in iter(proc.stdout.readline,''): 22 | if not running: 23 | break 24 | 25 | line = str(line.rstrip()) 26 | # Windows/Linux seem to call SCSI SYNCHRONIZE CACHE 27 | if "PiratePython SYNCHRONIZE CACHE" in line: 28 | # If we see a cache sync then lock in on only those 29 | sync_only_mode = True 30 | do_sync = True 31 | # OSX is weird and *only* calls writes 32 | # if we never see a cache sync, then rely on writes 33 | elif sync_only_mode == False and "SYNCHRONIZE CACHE" in line: 34 | do_sync = True 35 | 36 | time.sleep(0.005) 37 | 38 | _t_sync = threading.Thread(target=wait_for_sync) 39 | _t_sync.start() 40 | 41 | def bash(cmd): 42 | try: 43 | proc = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 44 | return proc.communicate() 45 | except subprocess.CalledProcessError: 46 | return None 47 | 48 | def signal_handler(signal=0, frame=0): 49 | global running 50 | running = False 51 | proc.terminate() 52 | _t_sync.join() 53 | sys.exit(0) 54 | 55 | try: 56 | while True: 57 | if do_sync: 58 | do_sync = False 59 | if time.time() - last_sync > 0.5: 60 | last_sync = time.time() 61 | 62 | time.sleep(0.001) 63 | 64 | # Unmount boot, don't like doing this but it seems essential 65 | bash("umount /boot") 66 | 67 | # Remount, now we should have new information about the size of main.py 68 | bash("mount /boot") 69 | 70 | #bash("echo 3 > /proc/sys/vm/drop_caches") 71 | 72 | time.sleep(0.001) 73 | 74 | bash("dd iflag=direct if=/boot/main.py of=/tmp/_main.py") 75 | bash("dd iflag=direct if=/boot/settings.txt of=/tmp/_settings.txt") 76 | bash("dd iflag=direct if=/boot/wpa_supplicant.conf of=/tmp/wpa_supplicant.conf") 77 | bash("dd iflag=direct if=/boot/wpa_supplicant_ap.conf of=/tmp/wpa_supplicant_ap.conf") 78 | bash("touch /tmp/refresh") 79 | 80 | print("sync") 81 | 82 | time.sleep(0.1) 83 | 84 | except KeyboardInterrupt: 85 | signal_handler(0, 0) 86 | -------------------------------------------------------------------------------- /source/raspbian/fs/sbin/piratepython-usb: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # TODO: Figure out how to get ECM to work here 4 | # without breaking Windows support 5 | 6 | # Currently OSX supports Mass Storage + Serial 7 | # Windows 10 and Linux seem to support everything 8 | # Windows 8, 7 and below are untested 9 | 10 | if [ ! -d /sys/kernel/config/usb_gadget ]; then 11 | modprobe libcomposite 12 | fi 13 | 14 | if [ -d /sys/kernel/config/usb_gadget/g1 ]; then 15 | exit 0 16 | fi 17 | 18 | ID_VENDOR="0x1d6b" #"0x0430" # was "0x1d6b" 19 | ID_PRODUCT="0x0104" #"0xa4a2" # was 0x0104" 20 | 21 | SERIAL="$(grep Serial /proc/cpuinfo | sed 's/Serial\s*: 0000\(\w*\)/\1/')" 22 | MAC="$(echo ${SERIAL} | sed 's/\(\w\w\)/:\1/g' | cut -b 2-)" 23 | MAC_HOST="12$(echo ${MAC} | cut -b 3-)" 24 | MAC_DEV="02$(echo ${MAC} | cut -b 3-)" 25 | 26 | cd /sys/kernel/config/usb_gadget/ 27 | 28 | mkdir g1 29 | cd g1 30 | 31 | echo "0x0200" > bcdUSB 32 | echo "0x02" > bDeviceClass 33 | echo "0x00" > bDeviceSubClass 34 | echo "0x3066" > bcdDevice 35 | echo $ID_VENDOR > idVendor 36 | echo $ID_PRODUCT > idProduct 37 | 38 | # Windows extensions to force config 39 | 40 | echo "1" > os_desc/use 41 | echo "0xcd" > os_desc/b_vendor_code 42 | echo "MSFT100" > os_desc/qw_sign 43 | 44 | mkdir strings/0x409 45 | echo "9112473" > strings/0x409/serialnumber 46 | echo "Pimoroni Ltd." > strings/0x409/manufacturer 47 | echo "PiratePython" > strings/0x409/product 48 | 49 | # Config #1 for OSX / Linux 50 | 51 | mkdir configs/c.1 52 | mkdir configs/c.1/strings/0x409 53 | echo "CDC 2xACM+Mass Storage+RNDIS" > configs/c.1/strings/0x409/configuration 54 | 55 | mkdir functions/acm.GS0 56 | mkdir functions/acm.GS1 57 | #mkdir functions/ecm.usb0 # OSX/Linux 58 | mkdir functions/rndis.usb0 # Flippin' Windows 59 | mkdir functions/mass_storage.piratepython 60 | #mkdir functions/mass_storage.piratepython/lun.1 61 | 62 | # lun.0 /dev/mmcblk0p1 for editing files on SD card 63 | echo "/dev/mmcblk0p1" > functions/mass_storage.piratepython/lun.0/file 64 | echo 0 > functions/mass_storage.piratepython/stall 65 | echo 0 > functions/mass_storage.piratepython/lun.0/cdrom 66 | echo 0 > functions/mass_storage.piratepython/lun.0/nofua 67 | echo 1 > functions/mass_storage.piratepython/lun.0/removable 68 | echo "PPPython Boot" > functions/mass_storage.piratepython/lun.0/inquiry_string 69 | 70 | # lun.1 virtual filesystem for returning debug info 71 | #echo 0 > functions/mass_storage.piratepython/lun.1/cdrom 72 | #echo 0 > functions/mass_storage.piratepython/lun.1/nofua 73 | #echo 1 > functions/mass_storage.piratepython/lun.1/removable 74 | #echo 1 > functions/mass_storage.piratepython/lun.1/ro 75 | #echo "PPPython Debug" > functions/mass_storage.piratepython/lun.1/inquiry_string 76 | 77 | echo "RNDIS" > functions/rndis.usb0/os_desc/interface.rndis/compatible_id 78 | echo "5162001" > functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id 79 | 80 | echo $MAC_HOST > functions/rndis.usb0/host_addr 81 | echo $MAC_DEV > functions/rndis.usb0/dev_addr 82 | 83 | # Set up the rndis device only first 84 | 85 | ln -s functions/rndis.usb0 configs/c.1 86 | 87 | # Tell Windows to use config #2 88 | 89 | ln -s configs/c.1 os_desc 90 | 91 | # Show Windows the RNDIS device with 92 | # bDeviceClass 0x02 93 | # bDeviceSubClass 0x02 94 | 95 | echo "20980000.usb" > UDC 96 | 97 | # Give it time to install 98 | 99 | sleep 5 100 | 101 | # Yank it back 102 | 103 | echo "" > UDC 104 | 105 | # Sneak in all the extra goodies 106 | 107 | ln -s functions/acm.GS0 configs/c.1 108 | ln -s functions/acm.GS1 configs/c.1 109 | ln -s functions/mass_storage.piratepython configs/c.1 110 | 111 | # Reset bDeviceClass to 0x00 112 | # This is essential to make it work in Windows 10 113 | # Basically forces it to use device information 114 | # in the descriptors versus assuming a particular class. 115 | 116 | echo "0x00" > bDeviceClass 117 | 118 | # Re-attach the gadget 119 | 120 | echo "20980000.usb" > UDC 121 | 122 | # BOOM! 123 | 124 | ifconfig usb0 up 10.0.99.1 125 | -------------------------------------------------------------------------------- /source/raspbian/multistrap.conf: -------------------------------------------------------------------------------- 1 | [General] 2 | arch=armhf 3 | 4 | # these control package selection 5 | omitrequired=true 6 | addimportant=false 7 | allowrecommends=false 8 | 9 | # cleans up apt cache inside the image 10 | cleanup=true 11 | 12 | # needed because the Foundation repo has no key package 13 | noauth=false 14 | 15 | # extract all downloaded archives 16 | unpack=true 17 | 18 | # normally multistrap would run the pre/post scripts itself 19 | # if run on a native arch (eg if you build on an rpi.) 20 | # since we will run them manually, disable this behaviour. 21 | ignorenativearch=true 22 | 23 | # debootstrap determines which repository is used to 24 | # calculate the list of Priority: required packages 25 | debootstrap=Raspbian Foundation 26 | 27 | # aptsources is a list of sections to be listed 28 | # in the /etc/apt/sources.list.d/multistrap.sources.list 29 | # of the target. 30 | aptsources=Raspbian Foundation 31 | 32 | 33 | [Raspbian] 34 | source=http://mirrordirector.raspbian.org/raspbian 35 | #keyring=raspbian-archive-keyring 36 | suite=stretch 37 | 38 | # these packages are required for the image to even build 39 | packages=base-files base-passwd bash coreutils dash debianutils diffutils dpkg 40 | packages=findutils grep gzip init libc-bin login mount sed tar util-linux cpio 41 | #packages=libfakeroot libfakechroot 42 | 43 | # gstreamer 44 | # packages=liborc-0.4-0 libasound2 libmpg123-0 libvorbisenc2 libflac8 libjpeg62-turbo libxml2 libsoup2.4-1 45 | 46 | # Dependencies for vlc.img 47 | # packages=libmpeg2-4 libmad0 liblua5.2 libfaad-dev 48 | 49 | # customize the image here 50 | packages=systemd udev kmod apt net-tools wpasupplicant crda 51 | packages=dropbear openssh-sftp-server openssh-client sudo nano ncurses-base 52 | packages=alsa-oss alsa-tools alsa-utils 53 | packages=bluez bluez-firmware iptables inotify-tools 54 | packages=python3 python3-pip python3-wheel python3-setuptools 55 | packages=pigpio python3-pigpio python3-w3lib python3-serial python3-tweepy python3-spur 56 | packages=python3-netifaces python3-zeroconf python3-six 57 | packages=python3-gpiozero python3-flask python3-pil python3-picamera 58 | packages=python3-blinkt python3-phatbeat python3-scrollphat python3-scrollphathd python3-unicornhathd 59 | packages=python3-automationhat python3-explorerhat python3-envirophat python3-motephat 60 | packages=python3-touchphat python3-pianohat python3-drumhat python3-rainbowhat python3-fourletterphat 61 | packages=python3-pantilthat python3-buttonshim python3-microdotphat 62 | 63 | [Foundation] 64 | source=http://archive.raspberrypi.org/debian 65 | suite=stretch 66 | packages=libraspberrypi0 firmware-brcm80211 67 | -------------------------------------------------------------------------------- /source/raspbian/pip/evdev-0.7.0-cp35-cp35m-linux_armv6l.whl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/source/raspbian/pip/evdev-0.7.0-cp35-cp35m-linux_armv6l.whl -------------------------------------------------------------------------------- /source/raspbian/pip/rpi_ws281x-3.0.3-cp34-cp34m-linux_armv6l.whl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/source/raspbian/pip/rpi_ws281x-3.0.3-cp34-cp34m-linux_armv6l.whl -------------------------------------------------------------------------------- /source/raspbian/pip/rpi_ws281x-3.0.3-cp35-cp35m-linux_armv6l.whl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/source/raspbian/pip/rpi_ws281x-3.0.3-cp35-cp35m-linux_armv6l.whl -------------------------------------------------------------------------------- /source/raspbian/pip/unicornhat-2.2.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pimoroni/PiratePython/c013ccfb4668dc3cfc79cd3454c393b0fb9ee6a7/source/raspbian/pip/unicornhat-2.2.3.tar.gz -------------------------------------------------------------------------------- /source/raspbian/piratepython-usb: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # TODO: Figure out how to get ECM to work here 4 | # without breaking Windows support 5 | 6 | # Currently OSX supports Mass Storage + Serial 7 | # Windows 10 and Linux seem to support everything 8 | # Windows 8, 7 and below are untested 9 | 10 | if [ ! -d /sys/kernel/config/usb_gadget ]; then 11 | modprobe libcomposite 12 | fi 13 | 14 | if [ -d /sys/kernel/config/usb_gadget/g1 ]; then 15 | exit 0 16 | fi 17 | 18 | ID_VENDOR="0x1d6b" #"0x0430" # was "0x1d6b" 19 | ID_PRODUCT="0x0104" #"0xa4a2" # was 0x0104" 20 | 21 | SERIAL="$(grep Serial /proc/cpuinfo | sed 's/Serial\s*: 0000\(\w*\)/\1/')" 22 | MAC="$(echo ${SERIAL} | sed 's/\(\w\w\)/:\1/g' | cut -b 2-)" 23 | MAC_HOST="12$(echo ${MAC} | cut -b 3-)" 24 | MAC_DEV="02$(echo ${MAC} | cut -b 3-)" 25 | 26 | cd /sys/kernel/config/usb_gadget/ 27 | 28 | mkdir g1 29 | cd g1 30 | 31 | echo "0x0200" > bcdUSB 32 | echo "0x02" > bDeviceClass 33 | echo "0x00" > bDeviceSubClass 34 | echo "0x3066" > bcdDevice 35 | echo $ID_VENDOR > idVendor 36 | echo $ID_PRODUCT > idProduct 37 | 38 | # Windows extensions to force config 39 | 40 | echo "1" > os_desc/use 41 | echo "0xcd" > os_desc/b_vendor_code 42 | echo "MSFT100" > os_desc/qw_sign 43 | 44 | mkdir strings/0x409 45 | echo "9112473" > strings/0x409/serialnumber 46 | echo "Pimoroni Ltd." > strings/0x409/manufacturer 47 | echo "PiratePython" > strings/0x409/product 48 | 49 | # Config #1 for OSX / Linux 50 | 51 | mkdir configs/c.1 52 | mkdir configs/c.1/strings/0x409 53 | echo "CDC 2xACM+Mass Storage+RNDIS" > configs/c.1/strings/0x409/configuration 54 | 55 | mkdir functions/acm.GS0 56 | mkdir functions/acm.GS1 57 | #mkdir functions/ecm.usb0 # OSX/Linux 58 | mkdir functions/rndis.usb0 # Flippin' Windows 59 | mkdir functions/mass_storage.piratepython 60 | 61 | echo "/dev/mmcblk0p1" > functions/mass_storage.piratepython/lun.0/file 62 | echo 0 > functions/mass_storage.piratepython/stall 63 | echo 0 > functions/mass_storage.piratepython/lun.0/cdrom 64 | echo 0 > functions/mass_storage.piratepython/lun.0/nofua 65 | echo 1 > functions/mass_storage.piratepython/lun.0/removable 66 | echo "PiratePython" > functions/mass_storage.piratepython/lun.0/inquiry_string 67 | 68 | echo "RNDIS" > functions/rndis.usb0/os_desc/interface.rndis/compatible_id 69 | echo "5162001" > functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id 70 | 71 | echo $MAC_HOST > functions/rndis.usb0/host_addr 72 | echo $MAC_DEV > functions/rndis.usb0/dev_addr 73 | 74 | # Set up the rndis device only first 75 | 76 | ln -s functions/rndis.usb0 configs/c.1 77 | 78 | # Tell Windows to use config #2 79 | 80 | ln -s configs/c.1 os_desc 81 | 82 | # Show Windows the RNDIS device with 83 | # bDeviceClass 0x02 84 | # bDeviceSubClass 0x02 85 | 86 | echo "20980000.usb" > UDC 87 | 88 | # Give it time to install 89 | 90 | sleep 2 91 | 92 | # Yank it back 93 | 94 | echo "" > UDC 95 | 96 | # Sneak in all the extra goodies 97 | 98 | ln -s functions/acm.GS0 configs/c.1 99 | ln -s functions/acm.GS1 configs/c.1 100 | ln -s functions/mass_storage.piratepython configs/c.1 101 | 102 | # Reset bDeviceClass to 0x00 103 | # This is essential to make it work in Windows 10 104 | # Basically forces it to use device information 105 | # in the descriptors versus assuming a particular class. 106 | 107 | echo "0x00" > bDeviceClass 108 | 109 | # Re-attach the gadget 110 | 111 | echo "20980000.usb" > UDC 112 | 113 | # BOOM! 114 | 115 | ifconfig usb0 up 10.0.99.1 116 | -------------------------------------------------------------------------------- /source/raspbian/scripts/addusers.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | NEW_USER=pirate 4 | NEW_PASS=`mkpasswd -m sha-512 p1r4t3` 5 | NEW_HOST=piratepython 6 | 7 | echo "Adding user $NEW_USER" 8 | $MYCHROOT $ROOTDIR useradd -m -p $NEW_PASS -s /bin/bash $NEW_USER 9 | $MYCHROOT $ROOTDIR usermod -a -G dialout,audio,sudo,adm,kmem $NEW_USER 10 | $MYCHROOT $ROOTDIR chown -R pirate:pirate /home/pirate 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /source/raspbian/scripts/copyfs.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | echo "Copy files from fs/* into $ROOTDIR" 4 | 5 | cp -vr fs/* $ROOTDIR-dist 6 | 7 | -------------------------------------------------------------------------------- /source/raspbian/scripts/final.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | ROOTDIR=$ROOTDIR-dist 4 | 5 | echo "" 6 | echo "" # Yes I know you can use \n but this visually separates it 7 | echo "Cleaning up..." 8 | 9 | ./cleanup $ROOTDIR excludes.conf > /dev/null 10 | mkdir -p $ROOTDIR/etc/dpkg/dpkg.cfg.d 11 | cp excludes.conf $ROOTDIR/etc/dpkg/dpkg.cfg.d/ 12 | 13 | echo "Update udevadm hwdb" 14 | $MYCHROOT $ROOTDIR udevadm hwdb --update --usr 15 | 16 | echo "Symlinking init" 17 | # Link init to /init so the initrd actually boots 18 | ln -sf /sbin/init $ROOTDIR/init 19 | 20 | ln -sf /proc/mounts $ROOTDIR/etc/mtab 21 | 22 | echo "Creating minimal device nodes..." 23 | 24 | # this must be done last. if the fakeroot devices exist on the system, 25 | # fakechroot wont be able to read from them, which breaks systemd setup. 26 | cd $ROOTDIR/dev 27 | fakeroot /sbin/MAKEDEV std 28 | cd ../.. 29 | 30 | 31 | -------------------------------------------------------------------------------- /source/raspbian/scripts/implode.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | ROOTDIR="$ROOTDIR-dist" 4 | 5 | function bblink { 6 | $MYCHROOT $ROOTDIR ln -s /bin/busybox $1 7 | } 8 | 9 | echo "Remove apt and dpkg" 10 | # Implode apt and dpkg, the system is stateless, 11 | # so whadda we gonna do with a package manager? 12 | $MYCHROOT $ROOTDIR dpkg --force-all --purge tar grep 13 | bblink /bin/tar 14 | bblink /bin/grep 15 | 16 | $MYCHROOT $ROOTDIR dpkg --force-all --purge findutils diffutils net-tools sed mount gzip 17 | 18 | bblink /bin/sed 19 | 20 | # gzip 21 | bblink /bin/gzip 22 | 23 | # cpio 24 | # bblink /bin/cpio 25 | 26 | # extra stuff 27 | bblink /usr/bin/reset 28 | bblink /usr/bin/clear 29 | bblink /usr/bin/telnet 30 | bblink /usr/bin/microcom 31 | bblink /bin/pidof 32 | bblink /bin/zcat 33 | bblink /bin/udhcpd 34 | bblink /bin/udhcpc 35 | bblink /bin/vconfig 36 | bblink /usr/bin/unzip 37 | bblink /usr/bin/dos2unix 38 | bblink /usr/bin/unix2dos 39 | bblink /usr/bin/wget 40 | bblink /bin/bzip2 41 | bblink /usr/bin/hexdump 42 | bblink /usr/bin/tftp 43 | bblink /usr/bin/xzcat 44 | #bblink /sbin/getty 45 | bblink /usr/bin/logger 46 | bblink /bin/nc 47 | bblink /usr/sbin/traceroute 48 | bblink /bin/uncompress 49 | bblink /usr/bin/renice 50 | bblink /usr/bin/httpd 51 | bblink /usr/bin/nslookup 52 | bblink /usr/bin/rpm 53 | bblink /usr/bin/ipcalc 54 | 55 | # diffutils 56 | bblink /usr/bin/diff 57 | bblink /usr/bin/cmp 58 | 59 | # findutils 60 | bblink /usr/bin/find 61 | bblink /usr/bin/xargs 62 | 63 | # iputils 64 | bblink /bin/ping 65 | 66 | bblink /bin/hostname 67 | 68 | # net-utils 69 | bblink /bin/netstat 70 | $MYCHROOT $ROOTDIR ln -sf /bin/busybox /usr/bin/ifconfig 71 | bblink /sbin/nameif 72 | bblink /sbin/route 73 | 74 | # mount 75 | bblink /bin/mount 76 | bblink /bin/umount 77 | bblink /sbin/losetup 78 | bblink /sbin/swapoff 79 | bblink /sbin/swapon 80 | 81 | # coreutils 82 | $MYCHROOT $ROOTDIR rm -f /bin/ls /bin/cp /bin/mv /usr/bin/sort /usr/bin/du 83 | bblink /bin/ls 84 | bblink /bin/cp 85 | bblink /bin/mv 86 | bblink /usr/bin/sort 87 | bblink /usr/bin/du 88 | bblink /bin/egrep 89 | bblink /usr/bin/killall 90 | 91 | # procps 92 | $MYCHROOT $ROOTDIR rm -f /usr/bin/top 93 | bblink /usr/bin/top 94 | 95 | # extra 96 | bblink /usr/bin/ip 97 | bblink /usr/bin/vi 98 | 99 | $MYCHROOT $ROOTDIR dpkg --purge apt libapt-pkg5.0 100 | $MYCHROOT $ROOTDIR dpkg --force-all --purge dpkg 101 | $MYCHROOT $ROOTDIR rm -rf /etc/apt 102 | 103 | $MYCHROOT $ROOTDIR rm /usr/share/javascript/jquery/jquery.js 104 | $MYCHROOT $ROOTDIR ln -s /usr/share/javascript/jquery/jquery.min.js /usr/share/javascript/jquery/jquery.js 105 | 106 | bblink /sbin/start-stop-daemon 107 | -------------------------------------------------------------------------------- /source/raspbian/scripts/packrootfs.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | ROOTDIR="$ROOTDIR-dist" 4 | 5 | echo "Packing rootfs..." 6 | 7 | $MYCHROOT $ROOTDIR sh -c "cd / && find * -xdev -not \( \ 8 | -path host-rootfs -prune \ 9 | -path run -prune \ 10 | -path proc -prune \ 11 | -path sys -prune \ 12 | -path boot -prune \ 13 | \) | cpio --create -H newc" | gzip -9 > initrd 14 | -------------------------------------------------------------------------------- /source/raspbian/scripts/pipinstall.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | echo "Installing Python packages" 4 | 5 | cp -r pip root/ 6 | #proot -0 -q "qemu-arm-static -cpu arm1176" -w / -r root env HOME=/root pip3 uninstall rpi_ws281x unicornhat 7 | #proot -0 -q "qemu-arm-static -cpu arm1176" -w / -r root env HOME=/root pip3 install /usr/share/python-wheels/setuptools-33.1.1-py2.py3-none-any.whl 8 | #proot -0 -q "qemu-arm-static -cpu arm1176" -w / -r root env HOME=/root pip3 install /usr/share/python-wheels/wheel-0.29.0-py2.py3-none-any.whl 9 | proot -0 -q "qemu-arm-static -cpu arm1176" -w / -r root env HOME=/root pip3 install pip/* 10 | rm -rf $ROOTDIR/pip 11 | 12 | find $ROOTDIR -name "*.pyc" -exec rm {} \; 13 | 14 | #proot -0 -q "qemu-arm-static -cpu arm1176" -w / -r root python3 -m compileall /usr 15 | -------------------------------------------------------------------------------- /source/raspbian/scripts/pyinstalled.sh: -------------------------------------------------------------------------------- 1 | source env.sh 2 | 3 | sudo mount -o bind /dev/urandom $ROOTDIR/dev/urandom 4 | $MYCHROOT $ROOTDIR pip freeze 5 | sudo umount $ROOTDIR/dev/urandom 6 | 7 | --------------------------------------------------------------------------------