Hi Everybody, I would like to know if any proprietary binary blobs are required to use a Beaglebone Black. According to my findings, the Raspberry Pi has a proprietary binary blob involved with booting the machine, and also controlling the video. It wasn't so easy to find this information. I would prefer to use such a board with no proprietary software. That's why I'm considering the Beaglebone Black. Does anybody know the definitive answer? I've searched a lot of websites to no avail. Thanks! Andy -- Andy Stewart (KB1OIQ) Founder: Worcester Linux Users' Group Founder: Chelmsford Linux Meetup Group President: PART of Westford, MA (WB1GOF)
Andy, Why not ask that question in the BBB forums? On Apr 29, 2015 21:03, "Andy Stewart" <andystewart@comcast.net> wrote:
Hi Everybody,
I would like to know if any proprietary binary blobs are required to use a Beaglebone Black.
According to my findings, the Raspberry Pi has a proprietary binary blob involved with booting the machine, and also controlling the video. It wasn't so easy to find this information.
I would prefer to use such a board with no proprietary software. That's why I'm considering the Beaglebone Black.
Does anybody know the definitive answer? I've searched a lot of websites to no avail.
Thanks!
Andy
-- Andy Stewart (KB1OIQ) Founder: Worcester Linux Users' Group Founder: Chelmsford Linux Meetup Group President: PART of Westford, MA (WB1GOF)
_______________________________________________ Wlug mailing list Wlug@mail.wlug.org http://mail.wlug.org/mailman/listinfo/wlug
On 04/29/2015 09:18 PM, Jon "maddog" Hall wrote:
Andy,
Why not ask that question in the BBB forums?
HI maddog, I was using this as an excuse to talk to my friends in WLUG. :-) It has been a while since I said "hello". Andy -- Andy Stewart (KB1OIQ) Founder: Worcester Linux Users' Group Founder: Chelmsford Linux Meetup Group President: PART of Westford, MA (WB1GOF)
Andy> I would like to know if any proprietary binary blobs are Andy> required to use a Beaglebone Black. Andy> According to my findings, the Raspberry Pi has a proprietary binary blob Andy> involved with booting the machine, and also controlling the video. It Andy> wasn't so easy to find this information. Andy> I would prefer to use such a board with no proprietary software. That's Andy> why I'm considering the Beaglebone Black. Hmmm... I've got one running now. Looking at the kernel config, I see: CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="am335x-pm-firmware.bin" CONFIG_EXTRA_FIRMWARE_DIR="firmware" So it's running a binary blob for something. And that looks to be for power management. So it might not be required. John
On Thu, Apr 30, 2015 at 02:34:22PM -0400, John Stoffel wrote:
Andy> I would like to know if any proprietary binary blobs are Andy> required to use a Beaglebone Black.
Andy> According to my findings, the Raspberry Pi has a proprietary binary blob Andy> involved with booting the machine, and also controlling the video. It Andy> wasn't so easy to find this information.
Andy> I would prefer to use such a board with no proprietary software. That's Andy> why I'm considering the Beaglebone Black.
Hmmm... I've got one running now. Looking at the kernel config, I see:
CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="am335x-pm-firmware.bin" CONFIG_EXTRA_FIRMWARE_DIR="firmware"
So it's running a binary blob for something. And that looks to be for power management. So it might not be required.
It may not be that well known, but various PC perhipherals also require binary blobs. They may ship separately from the linux kernel package, depending on your distro, but they may still be required for certain functionality. For example Fedora 21, which prides itself on having a strict free-software and patent unencumbered software policy, still ships with binary blobs:
rpm -qa --qf='%{license}\t%{name}-%{version}-%{release}.%{arch}\n' \*firmware\* GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted linux-firmware-20150316-44.git020e534e.fc21.noarch Redistributable, no modification permitted iwl105-firmware-18.168.6.1-44.fc21.noarch Redistributable, no modification permitted iwl2030-firmware-18.168.6.1-44.fc21.noarch Redistributable, no modification permitted iwl6000g2a-firmware-18.168.6.1-44.fc21.noarch Redistributable, no modification permitted atmel-firmware-1.3-13.fc21.noarch Redistributable, no modification permitted iwl7260-firmware-25.15.12.0-44.fc21.noarch Redistributable, no modification permitted iwl3160-firmware-25.15.12.0-44.fc21.noarch Redistributable, no modification permitted ipw2200-firmware-3.1-10.fc21.noarch (MIT or GPLv2+) and Redistributable, no modification permitted midisport-firmware-1.2-13.fc21.noarch Redistributable, no modification permitted libertas-usb8388-firmware-20150316-44.git020e534e.fc21.noarch Redistributable, no modification permitted iwl5000-firmware-8.83.5.1_1-44.fc21.noarch Redistributable, no modification permitted iwl1000-firmware-39.31.5.1-44.fc21.noarch Redistributable, no modification permitted iwl4965-firmware-228.61.2.24-44.fc21.noarch Redistributable, no modification permitted iwl100-firmware-39.31.5.1-44.fc21.noarch Redistributable, no modification permitted ipw2100-firmware-1.3-17.fc21.noarch Redistributable, no modification permitted iwl6000-firmware-9.221.4.1-44.fc21.noarch Redistributable, no modification permitted iwl135-firmware-18.168.6.1-44.fc21.noarch GPLv2 zd1211-firmware-1.4-10.fc21.noarch Redistributable, no modification permitted iwl5150-firmware-8.24.2.2-44.fc21.noarch Redistributable, no modification permitted iwl6000g2b-firmware-18.168.6.1-44.fc21.noarch Redistributable, no modification permitted crystalhd-firmware-3.10.0-8.fc21.noarch Redistributable, no modification permitted iwl2000-firmware-18.168.6.1-44.fc21.noarch Redistributable, no modification permitted iwl3945-firmware-15.32.2.9-44.fc21.noarch Redistributable, no modification permitted iwl6050-firmware-41.28.5.1-44.fc21.noarch
Most of those are for Wi-Fi or wired chipsets or video decoders. But let's take a look more closely at linux-firmware. There is lots of stuff in there: /usr/lib/firmware/3com /usr/lib/firmware/acenic /usr/lib/firmware/adaptec /usr/lib/firmware/advansys /usr/lib/firmware/agere_ap_fw.bin /usr/lib/firmware/agere_sta_fw.bin /usr/lib/firmware/amd-ucode /usr/lib/firmware/ar3k /usr/lib/firmware/ar5523.bin /usr/lib/firmware/ar7010_1_1.fw /usr/lib/firmware/ar7010.fw /usr/lib/firmware/ar9170-1.fw /usr/lib/firmware/ar9170-2.fw /usr/lib/firmware/ar9271.fw /usr/lib/firmware/as102_data1_st.hex /usr/lib/firmware/as102_data2_st.hex /usr/lib/firmware/ath3k-1.fw /usr/lib/firmware/ath6k /usr/lib/firmware/atmsar11.fw /usr/lib/firmware/av7110 /usr/lib/firmware/bnx2 /usr/lib/firmware/bnx2x /usr/lib/firmware/bnx2x-e1-4.8.53.0.fw /usr/lib/firmware/bnx2x-e1-5.2.13.0.fw /usr/lib/firmware/bnx2x-e1-5.2.7.0.fw /usr/lib/firmware/bnx2x-e1h-4.8.53.0.fw /usr/lib/firmware/bnx2x-e1h-5.2.13.0.fw /usr/lib/firmware/bnx2x-e1h-5.2.7.0.fw /usr/lib/firmware/brcm /usr/lib/firmware/carl9170-1.fw /usr/lib/firmware/cbfw-3.2.1.1.bin /usr/lib/firmware/cbfw-3.2.3.0.bin /usr/lib/firmware/cbfw-3.2.5.1.bin /usr/lib/firmware/cis /usr/lib/firmware/cmmb_vega_12mhz.inp /usr/lib/firmware/cmmb_venice_12mhz.inp /usr/lib/firmware/configure /usr/lib/firmware/cpia2 /usr/lib/firmware/ct2fw-3.2.1.1.bin /usr/lib/firmware/ct2fw-3.2.3.0.bin /usr/lib/firmware/ct2fw-3.2.5.1.bin /usr/lib/firmware/ctfw-3.2.1.1.bin /usr/lib/firmware/ctfw-3.2.3.0.bin /usr/lib/firmware/ctfw-3.2.5.1.bin /usr/lib/firmware/cxgb3 /usr/lib/firmware/cxgb4 /usr/lib/firmware/dabusb /usr/lib/firmware/dsp56k /usr/lib/firmware/dvb-fe-xc4000-1.4.1.fw /usr/lib/firmware/dvb-fe-xc5000-1.6.114.fw /usr/lib/firmware/dvb-fe-xc5000c-4.1.30.7.fw /usr/lib/firmware/dvb_nova_12mhz_b0.inp /usr/lib/firmware/dvb_nova_12mhz.inp /usr/lib/firmware/dvb-usb-dib0700-1.20.fw /usr/lib/firmware/dvb-usb-it9135-01.fw /usr/lib/firmware/dvb-usb-it9135-02.fw /usr/lib/firmware/dvb-usb-terratec-h5-drxk.fw /usr/lib/firmware/e100 /usr/lib/firmware/edgeport /usr/lib/firmware/emi26 /usr/lib/firmware/emi62 /usr/lib/firmware/ene-ub6250 /usr/lib/firmware/f2255usb.bin /usr/lib/firmware/go7007 /usr/lib/firmware/GPL-3 /usr/lib/firmware/htc_7010.fw /usr/lib/firmware/htc_9271.fw /usr/lib/firmware/i2400m-fw-usb-1.4.sbcf /usr/lib/firmware/i2400m-fw-usb-1.5.sbcf /usr/lib/firmware/i6050-fw-usb-1.5.sbcf /usr/lib/firmware/intel /usr/lib/firmware/intelliport2.bin /usr/lib/firmware/isci /usr/lib/firmware/isdbt_nova_12mhz_b0.inp /usr/lib/firmware/isdbt_nova_12mhz.inp /usr/lib/firmware/isdbt_rio.inp /usr/lib/firmware/kaweth /usr/lib/firmware/keyspan /usr/lib/firmware/keyspan_pda /usr/lib/firmware/lbtf_usb.bin /usr/lib/firmware/lgs8g75.fw /usr/lib/firmware/libertas /usr/lib/firmware/Makefile /usr/lib/firmware/matrox /usr/lib/firmware/moxa /usr/lib/firmware/mrvl /usr/lib/firmware/mt7650.bin /usr/lib/firmware/mts_cdma.fw /usr/lib/firmware/mts_edge.fw /usr/lib/firmware/mts_gsm.fw /usr/lib/firmware/mts_mt9234mu.fw /usr/lib/firmware/mts_mt9234zba.fw /usr/lib/firmware/mwl8k /usr/lib/firmware/myri10ge_eth_big_z8e.dat /usr/lib/firmware/myri10ge_ethp_big_z8e.dat /usr/lib/firmware/myri10ge_ethp_z8e.dat /usr/lib/firmware/myri10ge_eth_z8e.dat /usr/lib/firmware/myri10ge_rss_eth_big_z8e.dat /usr/lib/firmware/myri10ge_rss_ethp_big_z8e.dat /usr/lib/firmware/myri10ge_rss_ethp_z8e.dat /usr/lib/firmware/myri10ge_rss_eth_z8e.dat /usr/lib/firmware/myricom /usr/lib/firmware/nvidia /usr/lib/firmware/ositech /usr/lib/firmware/phanfw.bin /usr/lib/firmware/qat_895xcc.bin /usr/lib/firmware/ql2100_fw.bin /usr/lib/firmware/ql2200_fw.bin /usr/lib/firmware/ql2300_fw.bin /usr/lib/firmware/ql2322_fw.bin /usr/lib/firmware/ql2400_fw.bin /usr/lib/firmware/ql2500_fw.bin /usr/lib/firmware/qlogic /usr/lib/firmware/r128 /usr/lib/firmware/r8a779x_usb3_v1.dlmem /usr/lib/firmware/radeon /usr/lib/firmware/README /usr/lib/firmware/rp2.fw /usr/lib/firmware/rsi_91x.fw /usr/lib/firmware/rt2561.bin /usr/lib/firmware/rt2561s.bin /usr/lib/firmware/rt2661.bin /usr/lib/firmware/rt2860.bin /usr/lib/firmware/rt2870.bin /usr/lib/firmware/rt3070.bin /usr/lib/firmware/rt3071.bin /usr/lib/firmware/rt3090.bin /usr/lib/firmware/rt3290.bin /usr/lib/firmware/rt73.bin /usr/lib/firmware/RTL8192E /usr/lib/firmware/rtl_nic /usr/lib/firmware/rtlwifi /usr/lib/firmware/s2250.fw /usr/lib/firmware/s2250_loader.fw /usr/lib/firmware/s5p-mfc.fw /usr/lib/firmware/s5p-mfc-v6.fw /usr/lib/firmware/s5p-mfc-v6-v2.fw /usr/lib/firmware/s5p-mfc-v7.fw /usr/lib/firmware/s5p-mfc-v8.fw /usr/lib/firmware/sdd_sagrad_1091_1098.bin /usr/lib/firmware/slicoss /usr/lib/firmware/sms1xxx-hcw-55xxx-dvbt-02.fw /usr/lib/firmware/sms1xxx-hcw-55xxx-isdbt-02.fw /usr/lib/firmware/sms1xxx-nova-a-dvbt-01.fw /usr/lib/firmware/sms1xxx-nova-b-dvbt-01.fw /usr/lib/firmware/sms1xxx-stellar-dvbt-01.fw /usr/lib/firmware/sun /usr/lib/firmware/sxg /usr/lib/firmware/TDA7706_OM_v2.5.1_boot.txt /usr/lib/firmware/TDA7706_OM_v3.0.2_boot.txt /usr/lib/firmware/tdmb_nova_12mhz.inp /usr/lib/firmware/tehuti /usr/lib/firmware/ti_3410.fw /usr/lib/firmware/ti_5052.fw /usr/lib/firmware/ti-connectivity /usr/lib/firmware/tigon /usr/lib/firmware/tlg2300_firmware.bin /usr/lib/firmware/tr_smctr.bin /usr/lib/firmware/ttusb-budget /usr/lib/firmware/ueagle-atm /usr/lib/firmware/updates /usr/lib/firmware/usbdux /usr/lib/firmware/usbduxfast_firmware.bin /usr/lib/firmware/usbdux_firmware.bin /usr/lib/firmware/usbduxsigma_firmware.bin /usr/lib/firmware/v4l-cx231xx-avcore-01.fw /usr/lib/firmware/v4l-cx23885-avcore-01.fw /usr/lib/firmware/vicam /usr/lib/firmware/vntwusb.fw /usr/lib/firmware/vxge /usr/lib/firmware/whiteheat.fw /usr/lib/firmware/whiteheat_loader.fw /usr/lib/firmware/wsm_22.bin /usr/lib/firmware/yam The FSF maintains a list of distros and their "free-ness". Most of them fail due to including binary blobs: https://www.gnu.org/distros/common-distros.html Here are the ones they consider to be "free": https://www.gnu.org/distros/free-distros.html "This means these distros will include, and propose, exclusively free software. They will reject nonfree applications, nonfree programming platforms, nonfree drivers, nonfree firmware “blobs”, nonfree games, and any other nonfree software, as well as nonfree manuals or documentation."
Chuck: your point is well taken. Code that used to be ROM on I/O boards is now either in a Flash memory or perhaps in onboard RAM loaded by some operating system at boot time. Some would call that a proprietary binary blob. It is certainly much easier to update this code than to distribute a new ROM chip. Technology is constantly changing. I think the line is a blurry one. One could easily argue that the BIOS is a binary blob present in all PCs. My point wasn't to start this potential flame war. I was specifically asking about the Beaglebone Black. I'm actually curious just how Free it is. My research has not turned up any proprietary binary blobs for the this board. I figured that somebody in WLUG probably owned one and would know the answer. maddog's suggestion was also a good one. Thanks! Andy -- Andy Stewart (KB1OIQ) Founder: Worcester Linux Users' Group Founder: Chelmsford Linux Meetup Group President: PART of Westford, MA (WB1GOF)
participants (4)
-
Andy Stewart
-
Chuck Anderson
-
John Stoffel
-
Jon "maddog" Hall