There is a perpetual effort to make the Linux kernel work on any available hardware. This work takes place within projects like OpenWrt and also within companies that design, manufacture, or sell hardware and products based on Linux. Much of this work eventually gets mainlined, meaning the code becomes part of the mainline Linux kernel.
Today, we take wireless functionality for granted, but in the beginning, it was a real challenge. The IEEE 802.11 family of standards inspired what could be achieved, but the available Linux kernel drivers were poorly written, lacked features, or didn't exist. This is still true for some wireless hardware on the market today. No matter how fantastic or powerful a new device may be, its Linux drivers could offer limited functionality.
Since its founding, OpenWrt has focused on customer premise equipment (CPE) hardware such as routers and NAS devices, dedicating much effort to supporting IEEE 802.11. Given that the initial hardware, the Linksys WRT54G, sold over 400,000 units in its first months, it's safe to say that the work done by the OpenWrt project has had an impact.
Most SoC manufacturers license a (soft or hard) IP core for a certain CPU design from a licensor like MIPS or ARM, then combine this with other (self-developed or licensed) (soft or hard) IP cores for DSP-, wireless-, VoIP-, Sound-, Switch-, etc-functionality and commission the manufacturing of chips at some semiconductor foundry. These chips, SoCs, are acquired by different manufacturers of Routers. The latter design PCBs for whatever purpose and solder the purchased chips (SoC, RAM, Flash) onto them.
| Company | CPU | IP for Mixed-signal integrated circuit | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Intruction set license for | own IP | wired | optical | wireless | |||||||
| MIPS | ARM | Power Architecture | other | Ethernet | DSL | DOCSIS | GPON | 802.11 | WiMAX | LTE | |
| Broadcom | MIPS32, MIPS64 | ARMv6, ARMv7, ARMv8 | ✔ | ✔ | ✔ | ✔ | |||||
| Marvell (Intel) | ARMv5 (XScale, Sheeva), ARMv6, ARMv7, ARMv8 | ✔ | ✔ | ||||||||
| Qualcomm (Atheros, ZyDAS) | MIPS32 | ARMv5, ARMv6, ARMv7, ARMv8 | Ubicom32, Ubicom64 | ✔ | ✔ | ||||||
| MediaTek | MIPS32 | ARMv5, ARMv6, ARMv7, ARMv8 | ✔ | ✔ | ✔ | ||||||
| Lantiq (Infineon, Texas Instruments) | MIPS32 | ✔ | ✔ | ✔ | |||||||
| Samsung | ARMv4, ARMv5, ARMv6, ARMv7 | ||||||||||
| Texas Instuments | ARMv5, ARMv6, ARMv7 | TMS320 | ✔ | ||||||||
| Ikanos (Conexant, Analog Devices) | MIPS32, Lexra | ARMv5, ARMv6 | ✔ | ||||||||
| Realtek | Lexra, MIPS32 | ✔ | ✔ | ✔ | |||||||
| Intel (Digital Equipment Corporation) (Texas Instruments) | ARMv4 (StrongARM), ARMv5 (XScale), ARMv6 | x86, x86-64, IA-64 | ✔ | ✔ | ✔ | ||||||
| AMD | MIPS32, MIPS64 | x86, x86-64 | |||||||||
| Apple | ARMv7, ARMv8, ARMv9 | ||||||||||
| Hisilicon | ARMv? | ||||||||||
| Cavium Networks | MIPS32, MIPS64 | ARMv4 | |||||||||
| Vitesse Semiconductor | |||||||||||
| Applied Micro Circuits Corporation | ARMv8 | ✔ | |||||||||
| Maxim Integrated | |||||||||||
| Freescale Semiconductor | ARMv5, ARMv6, ARMv7 | ✔ | Motorola 68000 | ||||||||
| Allwinner Technology | ARMv5, ARMv7, ARMv8 | ||||||||||
| Renesas Electronics | MIPS64 | ARMv7 | SuperH ,M32R | ||||||||
| Sony | MIPS? | ✔ | |||||||||
| Toshiba | MIPS? | ||||||||||
| SiFive | RISC-V | ||||||||||
Now that we have an overview of the companies that own/license semiconductor IP, let's have a look of the available support of their products in the mainline Linux kernel and in the OpenWrt Linux kernel. We are less concerned about the Android Linux kernel or other heavily modified Linux kernels.
For mainlined Linux kernel-drivers for the
Each different OpenWrt platform represents a set of hardware that share certain common features, such as being part of the same family of SoCs. Depending on the semiconductor company that designs the SoC, a SoC-family can consist entirely of IP blocks that are all well-supported, maybe already mainlined. But it can also contain IP blocks, for that only raggedly written, feature-poor code exists, that would never be mainlined. Or IP blocks that are completely unsupported by the Linux kernel.
Qualcomm Atheros AR5xxx boards (Atheros brand)
Qualcomm Atheros AR7xxx, AR9xxx and QCA9xxx boards
Infineon/ADMtek ADM5120
Infineon WildPass ADM8668
TNETV1050, TNETD7200, TNETD73XX SoCs with ADSL2+ support.
XWAY, XRX200 SoCs with ADSL2+ and VDLS2 support in OpenWrt.
ramips, see MediaTek-Ralink ramipsBroadcom 47xx boards
Broadcom 6338, 6345, 6348, 6358, 6361, 6368, 63168 among other SoCs. Working with no driver for the on-board DSL/VoIP
Minimal support for some of these SoCs.
ARM-based bcm53xx and ARM-based bcm47xx SoCs:
Boards based on the CX94610 SoCs.
Marvell MV88F518x/MV88F528x
Marvell MV88F61xx/MV88F62xx
Marvell Armada XP/370
Only 2 known devices (supported). Devolo dLAN USB Extender
Freescale MPC52xx
Freescale MPC83xx
Freescale MPC8xx
Freescale i.MX23 series
Freescale i.MX6 series
Oxford Semi OX82x / PLXTECH NAS782x
A10/A10s/A13/A20/A23/A31/A33/A64/A80/H3/H5/H8
D1 RISC-V