2020-03-29 13:04:23 -07:00

91 lines
3.3 KiB
Markdown

# BeagleBone Black Setup
The BeagleBone Black was selected as a development board because it uses a variant of the Texas Instruments AM335X, a well-documented and inexpensive platform.
## First Time Setup
The best available setup documentation is from the [Beaglebone website](http://beagleboard.org/getting-started).
If you've used the "IoT" image, or something else that has no Xorg, this will install a minimal X setup:
**Note: You might not need (or want) Xorg.**
```
sudo apt-get install --no-install-recommends -y xserver-xorg-core xserver-xorg-input-all xserver-xorg-video-fbdev
```
### Physically Conneting the Display
Refer to the [pinmux docs](./docs/Pinmux.md)
### Connecting to Device
Once the OS is installed, there are three methods which can be used to communicate with the BeagleBone Black:
- **Ethernet**:
Preferred method. Connect to a host ethernet port and share an internet connection, or to a switch or hub that can easily let you determine the DHCP assigned IP address of the BBB.
- **Serial cable**:
Will let you watch boot. Use the PL2303 cable as [described here](https://elinux.org/Beagleboard:BeagleBone_Black_Serial#Adafruit_4_Pin_Cable_.28PL2303.29). Connect black to pin 1 (has a dot next to it), green to pin 4, white to pin 5. NOTE: It's a six pin header, the last pin is pin 6. Install the [Prolific drivers](http://www.prolific.com.tw/us/showproduct.aspx?p_id=229&pcid=41). Connect to the board before boot with `sudo screen /dev/tty.usbserial 115200 8n1`.
- **USB**:
Not recommended. Strange, fragile setup. Sketchy USB drivers. Follow the [Adafruit guide](https://learn.adafruit.com/ssh-to-beaglebone-black-over-usb/overview) at your own risk.
Generally, the BeagleBone will pick an IP address like `192.168.x.2`. The non-privileged user is `debian` and the password is `temppwd`.
## Device Tree Overlay
The display requires a device tree overlay to be created and loaded in order for the Linux kernel to correctly target the video device.
### On host machine
The `.dts` file uses some C headers that must be copied to the BeagleBone in order to compile the overlay:
```sh
scp -r ./beaglebone/dt-bindings debian@beaglebone.local:~/dts/dt-bindings
```
Make changes to `./beaglebone/VE-2IN-BBB.dts`, then copy it over:
```sh
scp ./beaglebone/VE-2IN-BBB.dts debian@beaglebone.local:~/dts
```
### On BeagleBone Black
Build the `.dts` file and reboot to load it:
```sh
cd ~/dts && \
cpp -nostdinc -I . -undef -x assembler-with-cpp VE-2IN-BBB.dts VE-2IN-BBB.dts.preprocessed && \
dtc -O dtb -o VE-2IN-BBB.dtbo -b 0 -@ VE-2IN-BBB.dts.preprocessed && \
sudo cp VE-2IN-BBB.dtbo /lib/firmware/VE-2IN-BBB.dtbo && \
sudo reboot
```
In `/boot/uEnv.txt`, comment out the virtual HDMI cape and the universal cape. Then, add this line:
```
dtb_overlay=/lib/firmware/VE-2IN-BBB.dtbo
```
You may also want to disable the HDMI framer in the kernel command line arguments:
```
cmdline=coherent_pool=1M net.ifnames=0 quiet
```
## Other things
These are \*_not necessary_, but documented here for reference.
### Manually Flash the Reset Pin
The GPIO `P9_12` on the **board** is `GPIO1_28`/`PIN 60` in software.
```sh
sudo echo 60 > /sys/class/gpio/export && sleep 1 && \
sudo echo out > /sys/class/gpio/gpio60/direction && \
echo 1 > /sys/class/gpio/gpio60/value && \
echo 0 > /sys/class/gpio/gpio60/value && sleep 0.5 && \
echo 1 > /sys/class/gpio/gpio60/value
```