I was really happy to recently receive a BeagleBone AI single board computer (SBC) from Element14. It's going to be used for attaching a camera eventually! The Gigabit Ethernet interface and high performance should be handy for that. There's some brief discussion about the BB-AI here: Another BeagleBone - BeagleBone AI!  and all the tech details here: BeagleBone® AI - Technical Specifications  and a FAQ: BeagleBone® AI - Frequently Asked Questions (FAQ)


To get started, I needed to power the thing up, and ensure that it had adequate cooling for any initial experiments.

This blog post documents what I did to get it up-and-running.



First off, since I was unsure how hot the BB-AI could get, some heatsinking was done. The BB-AI comes with a small heatsink (25x25mm) with M3 screw-holes on a 20x20mm square.

To add more heatsinking, I took a 60x40x1mm copper plate, and stuck on six 20x20x2.5mm ceramic heatsinks20x20x2.5mm ceramic heatsinks (using thermal tapethermal tape). However, micro porous ceramic heatsinksmicro porous ceramic heatsinks would be much better.


It was clamped briefly to make the bond better.


The ceramic heatsinks cannot be easily cut (diamond may work - thanks 14rhb ) so the micro-porous ones may be a better choice for that reason too. 60x40mm is about 2mm too large for the BB-AI - 58x40mm would be ideal : ) Since I could not trim the heatsinks, I dremelled part of the plastic standoffs instead, to accomodate the extra 2mm (you can see the noches on the rightmost plastic stand-offs in the photo above and below). Incidentally the plastic standoffs also need some dremelling at the end, so that they do not hit any components that are nearby on the circuit board.


I used 20mm M3 plastic standoffs at the top, and 5mm steel standoffs at the underside, because this is all I had. 25mm (or more) at the top could be better, to allow better access to the 46-way DIL header sockets P8 and P9. As it is, I will probably have to unscrew the top cover to add or remove connections - this isn't ideal, but I can live with it for now, and I could always add extension standoffs later.


Next, the 60x40mm heatsink assembly was stuck on the BB-AI's existing heatsink, using more thermal tape (don't forget to move the antenna on the BB-AI to point outward first! Otherwise it is more awkward to move later).


Adding a Fan

I used the template at BeagleBone AI BB-AI Photos for Documentation Purposes  in order to cut a couple of plastic pieces to fit the BB-AI. The aim was to produce something like this:

A 5V DC 40x40x6mm fan was used - any fan 40x40 or smaller could be used, but it is worth ensuring that the power consumption is low, if you wish to power it from the BB-AI directly.

I stuck the fan onto one of the pieces of plastic (with holes drilled as vents) so that the fan would blow onto the heatsink.

The fan was wired to pins 2 and 8 on the 46-pin connector P9 on the BB-AI (pin 2 is GND, and pin 8 is VDD_5V).


This is the final result:


Serial Console Cable

I wanted to have serial access to the BB-AI, for any troubleshooting. The BB-AI has a serial port with 3.3V levels, that can be attached to a PC via a USB-UART adaptor. Terminal software such a PuTTY can be used to access the serial interface. The serial interface is useful as a last resort, because it is always available even in the network (LAN or WLAN) connections fail.


To connect to the 3.3V serial pins on the BB-AI, the required connector body is a 3 way JST ZH3 way JST ZH, along with these  crimp pinscrimp pins.

However the crimp pins are extremely small (photo below shows a 1.27mm pitch IC for comparison). A PA-09 crimp tool can be used, but another option is to buy a connector with pre-attached wires from ebay. Anyway, I preferred to make my own rather than wait for an ebay seller.


The other end can be attached to a 3.3V USB UART to connect to your PC (at 115200 baud - thanks cstanton ).

As shown here, the pinout is:

Pin 1 (closest to the screw-hole on the board, and also marked with a shape on the silkscreen): GND

Pin 2 (orange wire) is UART1_RX which is a BB-AI input pin

Pin 3 (yellow wire) is UART1_TX which is a BB-AI output pin, the BB-AI transmits on this pin

This information is also in the BB-AI System Reference Manual (SRM) online documentation.


Power Supply

The BB-AI has a USB C connector. I initially tried a mobile phone charger (as supplied with a fairly recent Samsung phone, and it states that it supports 5V at 2A) however it didn't work, perhaps due to negotiation of power requirements. Anyway, what did work was a Raspberry Pi (Pi 3)  2.5A power supply, with a micro USB to USB C adaptor. It would make more sense to buy a more recent Pi 4 official USB supplyPi 4 official USB supply because it comes with a USB C connector pre-attached and offers more current (3A).


Powering Up

I connected up the USB UART to my PC, and then plugged in the USB C power supply. The BB-AI's LEDs started doing their thing, and the BB-AI was fully started in about fifteen seconds.

Here is the output captured from the serial console connection:


7-rc4-00001-g607b5b738b (Jul 06 2019 - 21:01:15 -0500), Build: jenkins-github_Bootloader-Builder-127

CPU  : DRA752-GP ES2.0
Model: BeagleBone AI
Board: BeagleBone AI REV A
DRAM:  1 GiB
CTRL_CORE_PAD_I2C1_SDA:    0x00060000
CTRL_CORE_PAD_I2C1_SCL:    0x00060000
CTRL_CORE_PAD_GPMC_A0:     0x00060007
CTRL_CORE_PAD_GPMC_A1:     0x00060007
CTRL_CORE_PAD_VIN2A_D4:    0x0005000f
CTRL_CORE_PAD_VIN2A_D5:    0x0005000f
CM_L4PER_GPIO7_CLKCTRL:    0x00000001
CM_L4PER_I2C1_CLKCTRL:     0x00000002
CM_L4PER_I2C4_CLKCTRL:     0x00000002
CM_L4PER_L4_PER1_CLKCTRL   0x00000001
PM_L4PER_I2C1_WKDEP        0x0000b000
RM_L4PER_I2C1_CONTEXT      0x00000002
PM_L4PER_I2C4_WKDEP        0x0000b000
RM_L4PER_I2C4_CONTEXT      0x00000001
BeagleBone: cape eeprom: i2c_probe: 0x54
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret 1
BeagleBone: cape eeprom: i2c_probe: 0x55
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret 1
BeagleBone: cape eeprom: i2c_probe: 0x56
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret 1
BeagleBone: cape eeprom: i2c_probe: 0x57
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret 1
Warning: ethernet@48484000 using MAC address from ROM
eth0: ethernet@48484000
Press SPACE to abort autoboot in 1 seconds
usb_boot is currently disabled
scsi_boot is currently disabled
MMC: no card present
MMC: no card present
MMC: no card present
switch to partitions #0, OK
mmc1(part 0) is current device

Partition Map for MMC device 1  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     8192            30613504        7e0461a0-01     83 Boot
Scanning mmc device 1
Checking for: /uEnv.txt ...
Checking for: /boot/uEnv.txt ...
603 bytes read in 1 ms (588.9 KiB/s)
Loaded environment from /boot/uEnv.txt
Checking if uname_r is set in /boot/uEnv.txt ...
debug: [uname_r=4.14.108-ti-r113] ...
loading /boot/vmlinuz-4.14.108-ti-r113 ...
9929216 bytes read in 223 ms (42.5 MiB/s)
loading /boot/dtbs/4.14.108-ti-r113/am5729-beagleboneai.dtb ...
150062 bytes read in 4 ms (35.8 MiB/s)
uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...
loading /boot/initrd.img-4.14.108-ti-r113 ...
4642997 bytes read in 105 ms (42.2 MiB/s)
debug: [console=ttyS0,115200n8 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 rng_core.default_quality=100 quiet] ...
debug: [bootz 0x82000000 0x88080000:46d8b5 0x88000000] ...
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Ramdisk to 8fb92000, end 8ffff8b5 ... OK
   Loading Device Tree to 8fb6a000, end 8fb91a2d ... OK

Starting kernel ...

[    0.002502] /cpus/cpu@0 missing clock-frequency property
[    0.002524] /cpus/cpu@1 missing clock-frequency property
[    0.564816] omap-mailbox 4a0f4000.mailbox: no available mbox devices found
[    0.564886] omap-mailbox 4883a000.mailbox: no available mbox devices found
[    0.564952] omap-mailbox 4883c000.mailbox: no available mbox devices found
[    0.565015] omap-mailbox 4883e000.mailbox: no available mbox devices found
[    0.565660] omap-mailbox 48844000.mailbox: no available mbox devices found
[    0.565727] omap-mailbox 48846000.mailbox: no available mbox devices found
[    0.565792] omap-mailbox 4885e000.mailbox: no available mbox devices found
[    0.565856] omap-mailbox 48860000.mailbox: no available mbox devices found
[    0.565919] omap-mailbox 48862000.mailbox: no available mbox devices found
[    0.565982] omap-mailbox 48864000.mailbox: no available mbox devices found
[    0.566069] omap-mailbox 48802000.mailbox: no available mbox devices found
[    1.013204] tpd12s015 encoder@0: failed to find video source
[    1.019203] connector-hdmi connector@0: failed to find video source
[    1.141562] dwc3 488d0000.usb: failed to initialize core
[    1.162119] sdhci-omap 4809c000.mmc: failed to set system capabilities
[    1.169361] sdhci-omap 480b4000.mmc: failed to set system capabilities
[    1.192494] omap_voltage_late_init: Voltage driver support not added
[    1.339706] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_1_8v mode
[    1.346371] sdhci-omap 4809c000.mmc: no pinctrl state for hs200_1_8v mode
[    1.473756] omapdss error: HDMI I2C Master Error
[    2.531038] omapdss error: HDMI I2C Master Error
[    5.633469] omapdss error: HDMI I2C Master Error
[    5.655687] omapdss error: HDMI I2C Master Error

Debian GNU/Linux 9 beaglebone ttyS0 Debian Image 2019-08-03


default username:password is [debian:temppwd]

beaglebone login: [   12.679690] omapdss error: HDMI I2C Master Error


Upgrading the Software

I logged in using the default username and password debian and temppwd and then plugged in an Ethernet connection, and then I followed the steps documented here:  BeagleBone® AI - Frequently Asked Questions (FAQ)

The upgrade process took about 10-15 minutes overall.


Measuring the Temperature

I used the information here: Reading BeagleBone AI Temperatures  - thanks gdstew

After idling for about an hour, Linux reports these temperature values (divide by 1000 to get the temperature in degrees C):


debian@beaglebone:~$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
debian@beaglebone:~$ cat /sys/devices/virtual/thermal/thermal_zone1/temp
debian@beaglebone:~$ cat /sys/devices/virtual/thermal/thermal_zone2/temp
debian@beaglebone:~$ cat /sys/devices/virtual/thermal/thermal_zone3/temp
debian@beaglebone:~$ cat /sys/devices/virtual/thermal/thermal_zone4/temp


In summary, it reports a temperature of about 46 degrees C (ambient temperature was 22.5 degrees C at the time).


Changing Passwords and Adding Users

The BB-AI runs Debian Linux, just like the older BeagleBone Black. In order to change passwords and optionally add new users, the Getting Started with BeagleBone Black  guide can be used - refer to the Configuring Linux section.


Configuring WiFi

The Getting Started with BeagleBone Black guide has a section titled Connecting to a Wireless Network. I followed that, in order to get the BB-AI to connect to my home wireless network whenever the Ethernet cable is not present.



The steps described here were sufficient to get me up-and-running with the BB-AI. When purchasing a BB-AI, I think it is recommended to simultaneously obtain a Pi 4 power supply (mobile phone chargers are not guaranteed to be able to negotiate the required current output) or to obtain a micro USB to USB C adaptor for an older Pi 3 power supply, as well as heatsinks, thermal tape and a 5V DC fan.

Also, a 3.3V capable USB UART adaptor is highly useful.

Thanks for reading!