A tool for coreboot developers and users. The firmware itself is based on vanilla OpenWRT Chaos Calmer with some modifications. This firmware is mainly intended for beagle bone black (BBB).
Release Note 0.3.0 "screwdriver" - 2015-10-15
- SDCard only release
- USB debug gadget on USB
- flashrom support
- SPI pins are 17/18 21/22 on P9. 1/2 GND, 3/4 VCC 3.3V.
- based on OpenWRT Chaos Calmer release rev r47050
- some old bbb won't boot (from sd card). Wiping the eMMC fixes this problem.
Install the screwdriver on your BBB
You have to copy it raw on a sd card. The screwdriver can not (yet) installed on the eMMC. Under linux you can use dd.
WARNING If you choose a wrong X you can damage your OS!!!
dd if=openwrt-0.3-omap-beagleboneblack-sdcard-vfat-am335x_evm.img of=/dev/sdX
How to access to screwdriver?
- via network
- via rs232 3.3V TTL
Connecting via network
- screwdriver provides a dhcp server and is accessable via 192.168.1.1
- connect network cable
- username/password root/coreboot
Connect via RS232 3.3V
- connect a 3.3V serial adapter to pin 1 GND, 4 & 5 data
- no password required
How to flash a chip?
flashrom -p linux_spi:dev=/dev/spidev1.0 -r /tmp/foo
BBB Pin on P9 | Pin on SOIC-8 Chip | Description
1 & 2 | 4 | Ground GND 3 & 4 | 8 | VCC 3.3 V 17 | 1 | CS ChipSelect 18 | 5 | MOSI MasterOutSlaveIn 21 | 2 | MISO MasterInSlaveOut 22 | 6 | CLK Clock
VCC is not connected in all cases!!! Be sure you don't power the chip from 2 sources, it's a bad idea!
How to use the screwdriver as USB debug device
cat /dev/ttyGS0 | tee -a /tmp/output
Contact / More information
Please take a look at the OpenWrt documentation
for a complete and uptodate list of packages for your operating system. Make
sure the list contains
quilt. We use it for patch management.
apt-get install git subversion build-essential libncurses5-dev zlib1g-dev gawk \ unzip libxml-perl flex wget gawk libncurses5-dev gettext quilt python
Building BBB screwdriver
To get the source and build the firmware locally use:
git clone https://github.com/lynxis/bbb_screwdriver_builder cd firmware make -j4 # -j4 means it builds with 4 threads at the same time. depends how many cores and threads your machine has. ls firmwares/omap/default/
The build will take some time. You can improve the build time with
build options such as
-j <number of cores>.
V=s will give more verbose error messages.
An internet connection is required during the build process. A good internet connection can improve the build time.
You need approximately 10GB of space for the build.
You can find the actual firmware images generated by the ImageBuilder (and the ImageBuilder itself)
firmwares. The layout looks like the following:
firmwares/ omap/ OpenWrt-ImageBuilder-....tar.bz2 default/ images.. packages/ base/ luci/ packages/ routing/
As you notice there are two different versions:
default: BBB screwdriver
Creating a release
Every release has a semantic version number;
For a new release, create a new branch. The branch name must be a semantic version number. Make sure you change the semantic version number and, for major releases, the codename in the README and config files (./configs/*)
Also create a tag for every release.
Patches with quilt
Important: all patches should be pushed upstream!
If a patch is not yet included upstream, it can be placed in the
patches directory with the
quilt tool. Please configure
quilt as described in the openwrt wiki (which also provides a documentation of
Add, modify or delete a patch
In order to add, modify or delete a patch run:
make clean pre-patch
Then switch to the openwrt directory:
Now you can use the
quilt commands as described in the openwrt wiki.
Example: add a patch
quilt push -a # apply all patches quilt new 008-awesome.patch # tell quilt to create a new patch quilt edit somedir/somefile1 # edit files quilt edit somedir/somefile2 quilt refresh # creates/updates the patch file
Please create a pull request for the project you want to submit a patch.
Create a commit in the openwrt directory that contains your change. Use
git format-patch to create a patch:
git format-patch origin
Send a patch to the openwrt mailing list with
git send-email \ --firstname.lastname@example.org \ --smtp-server=mail.foo.bar \ --smtp-user=foo \ --smtp-encryption=tls \ 0001-a-fancy-change.patch
Additional information: https://dev.openwrt.org/wiki/SubmittingPatches