Introduction

Some Linux kernel drivers include binary blobs, i.e. software that is included without source code, with obfuscated or obscured source code, under non-Free Software licenses, that do not permit you to change the software so that it does what you wish.

Some applications and drivers require firmware to function, and sometimes that firmware is distributed only in object code form, under a nonfree license. Blobs can take many forms. Sometimes, they will be provided in separate files. Other times, they may be incorporated into the source of the driver itself (for example, it could be encoded as a large array of numbers).

Binary blobs can be classified as the following three types, currently found in the Linux kernel:

Sourceless binary blobs with no license, no explicit permission to redistribute, or an explicit prohibition to redistribute. This category currently includes the emi26, emi62, keyspan, smctr, cops, and 3c359 drivers.

Sourceless binary blobs distributed under GPL. This situation has been interpreted as a violation of the terms of GPL, which requires the distribution to be accompanied by the source code.

Binary blobs violating DFSG for other reasons. This category includes firmware which contains obfuscated source, or is not allowed to be modified.