Raspberry Pi Zero W - fhnw-imvs/fhnw-idb GitHub Wiki
Setting up a Pi is more complex than with a microcontroller. The route via Wi-Fi, either in the home network or with a mobile hotspot, is easier than a direct connection via a USB cable.
Choose a simple way first. Make sure that both devices are ultimately on the same Wi-Fi network so that they can communicate with each other. Another Wi-Fi network can be added to the Pi at any time.
- Download the Raspberry Pi Imager tool and install it
Use the Raspberry Pi Imager to download and create a bootable SD card
- Insert an SD card to your computer
- Launch the Raspberry Pi Imager tool
- Choose OS Raspberry Pi OS (other) > Raspberry Pi OS Lite (32-bit)
- Choose SD Card
- Open the configuration to setup SSH, Wifi, ...
- Flash the (zipped) Raspbian Lite IMG to the SD card
- Remove and re-insert the SD card to your computer
- There should now be a disk drive named bootfs
Further information can be found in the official documentation, see Install using Imager.
Create an ssh marker file on the SD card
- The following file will enable sshd, the SSH daemon, on the Raspberry Pi
- Navigate to the disk drive named bootfs and create an empty file named ssh with
$ cd /Volumes/bootfs $ touch ssh
or on Windows, assuming the bootfs drive is E:C:> E: E:> type nul > ssh
- Note: once sshd is enabled, the Raspberry Pi will remove the ssh file
Edit configuration files on the SD card. The SD card must be inserted in your host computer. Follow these instructions on how to configure a headless Raspberry Pi.
WARNING: wpa_supplicant.conf is not supported on bookworm and higher OS-releases.
- On the disk drive named bootfs, create a file named wpa_supplicant.conf
$ cd /Volumes/bootfs $ nano wpa_supplicant.conf
- For file content and options, see Configure Wi-Fi
- Insert the SD card into the Raspberry Pi (it is the Pi's "hard disk")
- Connect the USB cable, use the left USB connector on the Raspberry Pi
- Be patience; depending on the Raspberry Pi model the initial boot and configuration may take a few minutes and a few reboots.
- Download https://modclouddownloadprod.blob.core.windows.net/shared/mod-duo-rndis.zip
(see https://forum.moddevices.com/t/rndis-driver-for-windows-10/299) - Open device management (WINDOWS-R, type cmd, RETURN, type devmgmt.msc, RETURN)
- Find the new USB device in the device tree (e.g. COM3, usually showing a warning)
- Right click the USB device, click Update driver software...
- Choose Install from disk, select the mod-duo-rndis.zip downloaded above
- The USB device should now show up as an RNDIS device
- Download iTunes installer https://www.apple.com/itunes/download/win64
- Unpack the installer EXE/ZIP, find the Bonjour64.msi installer inside
- Run Bonjour64.msi, select Bonjour uninstall old version
- Run Bonjour64.msi, select Bonjour install 3.0
- Wi-Fi > Properties > Sharing > [✓] Allow
- System Preferences > Sharing > [✓] Internet
- Sharing > Share your connection from: Wi-Fi to computers using RNDIS Ethernet Gadget
Further information can be found in the official documentation, see Find the IP address of your Raspberry Pi.
To find your Pi Zero via USB (if Internet Sharing is enabled), type
$ dns-sd -G v4 raspberrypi.local
Or, use ifconfig (or ipconfig on Windows) you find the local IP prefix, e.g. 192.168.0.
$ ifconfig
en0: flags…
ether…
inet6…
inet 192.168.0.23
…
Then use nmap to scan the subnet for open ssh ports (port=22), e.g.
Note: make sure port scanning is fine with the local network admin, e.g. at FHNW it's not allowed.
$ nmap -A -p22 192.168.0.23/24
Nmap scan report for 192.168.0.42
…
ORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Raspbian 5+b1 (protocol 2.0)
Be patient - and it is possible that your new device is not found on the first run. Search for an entry from the Raspbian OS.
Note: If nmap returns just your device, use
sudo
:
$ sudo nmap -A -p22 192.168.0.23/24
Nmap scan report for 192.168.0.42
…
ORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Raspbian 5+b1 (protocol 2.0)
With ssh (or PuTTY on Windows), default password raspberry
$ ssh [email protected]
Or, via USB, if there's only one Pi
$ ssh [email protected]
Or via FTDI Serial (up to Pi 2, or with this fix for Pi 3).
3V3 (!), Pin 6 = GND, 8 = TX, 10 = RX
Use a relay service like Ngrok, Pagekite or Yaler.net.
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Open the Wi-Fi config file wpa_supplicant.conf (or create it on the SD card)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
The file should contain the following content (using your credentials)
country=UK
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="MY_SSID"
psk="MY_PASSWORD"
key_mgmt=WPA-PSK
}
Consider using the hashed version of psk, see output of
$ sudo wpa_passphrase 'MY_SSID' 'MY_PASSWORD'
To activate the new config, type
$ sudo ifconfig wlan0 up
To display the priority metric, use
$ route -n
To change the priority metric (here wlan0 before usb0), type
$ sudo nano /etc/dhcpcd.conf
interface wlan0
metric 200
interface usb0
metric 300
$ cat /sys/class/net/wlan0/address
$ sudo apt-get update
$ sudo apt-get install git
$ git
$ git config --global user.email "USER_EMAIL"
$ git config --global user.name "USER_NAME"
$ ssh-keygen -t rsa -b 4096 -C "USER_EMAIL"
$ eval "$(ssh-agent -s)"
$ cat ~/.ssh/id_rsa.pub
- Go to https://github.com/settings/keys
User Icon > Settings > SSH and GPG keys > New SSH key > {Paste SSH key}
$ sudo apt-get install keychain
$ keychain ~/.ssh/id_rsa
$ . ~/.keychain/$HOSTNAME-sh
(Until next reboot)
$ scp -P 22 LOCAL_FILE pi@RASPI_IP:RASPI_PATH
$ scp -P 22 pi@RASPI_IP:RASPI_FILE LOCAL_PATH
-
https://www.raspberrypi.org/blog/oracle-java-on-raspberry-pi/
$ sudo apt-get update && sudo apt-get install oracle-java7-jdk
- Optional:
$ sudo apt-get install maven
-
http://pi4j.com/ (wiringPi wrapper in Java)
$ curl -s get.pi4j.com | sudo bash
- http://pi4j.com/example/serial.html
- http://pi4j.com/example/control.html
- Get the latest LTS (long term support) version from https://nodejs.org/en/download/ e.g. v10.15.3
- Or use a previous version from https://nodejs.org/en/download/releases/ (for compatibility)
- Use the following commands with the selected version, e.g. for v10.15.3
$ wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-armv6l.tar.gz $ tar -xzf node-v10.15.3-linux-armv6l.tar.gz $ cd node-v10.15.3-linux-armv6l/ $ sudo cp -R * /usr/local/ $ node -v v10.15.3
- Update apt-get with
$ sudo apt-get update
- Install prerequisites with
$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
- Install the abandonware fork of noble with
$ npm install @abandonware/noble
- https://www.npmjs.com/package/rpi-gpio
- https://nodejs.org/api/stream.html
- https://github.com/abandonware/noble (BLE Central)
- https://github.com/abandonware/bleno (BLE Peripheral)