75 lines
3.0 KiB
Markdown
75 lines
3.0 KiB
Markdown
# Gadget Mode to setup a serial connection over USB
|
|
Prepare Raspberry Pi OS connection over a microUSB serial cable
|
|
|
|
Important: You will want to disable the serial console on RX/TX if you are trying to use that serial port for communicating with other devices.
|
|
|
|
Based upon Adafruit guide: https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/serial-gadget:
|
|
The author discovered errors in the guide and was able to correct them thanks to this blog https://www.isticktoit.net/?p=1383
|
|
|
|
Make sure you have your USB cable plugged into the left port **USB** and not the right port marked **PWR**.
|
|
1. Open a connection to the device via ssh or Raspberry Pi Connect
|
|
1. Become root (the superuser)
|
|
```
|
|
sudo su
|
|
```
|
|
1. Enable the DWC version 2 USB peripheral device tree overlay by appending it to the end after the `[all]` category (which is at the end)
|
|
```
|
|
echo "dtoverlay=dwc2" >> /boot/firmware/config.txt
|
|
```
|
|
1. We add the required module `dwc2` for loading at startup
|
|
```
|
|
echo "dwc2" >> /etc/modules
|
|
```
|
|
1. Check that we can load the libcomposite module
|
|
```
|
|
modprobe libcomposite
|
|
```
|
|
1. Put a copy of this repository in root's home directory using git
|
|
```
|
|
apt install -y git
|
|
git clone https://gitea.cs.ru.is/RU-V207/rover-pi.git
|
|
```
|
|
1. Go to Scripts and test if the `gadget.sh` runs without errors and hopefully a Serial port appers in Device Manager or equivalent
|
|
```
|
|
cd rover-pi/Scripts/
|
|
./gadget.sh
|
|
```
|
|
1. Install the systemd script
|
|
`cp serial-ether-gadget.service /lib/systemd/system/.`
|
|
1. Enable the getty (which connects a login terminal to the serial port)
|
|
```
|
|
systemctl enable serial-getty@ttyGS0.service
|
|
```
|
|
1. Reboot and see if the serial port appears
|
|
|
|
# Connecting to the serial terminal
|
|
You will need a serial terminal program (which used to be very very common) in order to communicate over your serial port
|
|
|
|
## Windows
|
|
- Putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
|
|
- MobaXterm: https://mobaxterm.mobatek.net/
|
|
|
|
## Linux
|
|
If using a Linux VM, you will need to pass the Pi USB connection there.
|
|
This is similar to the procedure for accessing an Arduino.
|
|
1. Start the Linux VM if you haven't already
|
|
1. Menu: Devices > USB
|
|
1. Look for "Silicon Labs CP210x USB to UART Bridge" and click on it.
|
|
1. check if port /dev/ttyUSB0 is found. The Pi will most often be accessible over this port.
|
|
```
|
|
ls -l /dev/ttyU*
|
|
```
|
|
1. The user must be in the dialout group to access it. Use the Linux command: `uid` -to check if you are in the group. If not in the dialout group, use:
|
|
```
|
|
sudo usermod -a -G dialout <username>
|
|
```
|
|
1. You will use the GNU `screen` application in Linux to access the Pi. You can install it with:
|
|
```
|
|
sudo apt install screen
|
|
```
|
|
1. You should now gain access to the Pi with:
|
|
```
|
|
` sudo screen /dev/ttyUSB0 115200
|
|
```
|
|
1. Press enter and you will be prompted to log in to the Pi with default credentials. User: pi - PW: raspberry
|