I’m currently working on a project requiring many GPIO pins, powered by a BeagleBone Black ARM Linux board. As I quickly found, many of the 65 possible GPIO pins are used for other functions. 25 of them are reserved for GPIO use if HDMI is disabled. In my case, using the BBB as a headless server, I have no use for HDMI. Leaving HDMI on leaves you 14 GPIO pins.
Disabling HDMI will free up pins J8_27-31 and J8_39-44 (see diagram below). The BeagleBone Black implements HDMI and onboard eMMC as virtual “cape” daughterboards. To disable HDMI, mount the FAT boot partition and edit uEnv.txt:
mount /dev/mmcblk0p1 /mnt/card vi /mnt/card/uEnv.txt
Make the first line read like this:
Now unmount the card and reboot:
umount /mnt/card shutdown -r now
Finally, you can check to make sure the HDMI cape was not loaded with this:
Every cape that is currently loaded will show an L in the second column. You should see that the eMMC cape remains loaded while the HDMI cape is not.
Pure GPIO Pins
If you disabled HDMI as described above, the GPIO pins that are unshaded below are always available to us: