This page covers the BCM33xx SoC specificities, but the BCM63xx SoC are mostly the same chip, except that the DOCSIS/EuroDOCSIS core is replaced with a DSL one.
BCM33xx support was partially introduced in the BCM63xx target. However, the BCM63xx target has been superseded by the BMIPS target, and we lost BCM33xx support (for now).
There is a WIP support for BCM3380 on Netgear CG3100D:
https://github.com/rikka0w0/openwrt-fast3864op/tree/bcm3380-20241014
More progress can be found here:
https://gist.github.com/rikka0w0/4e4d5feb3a50a8b64224750140f859ef
There is an attempt to run Linux on TC7200 (BCM3383): https://github.com/jclehner/linux-technicolor-tc7200
Broadcom33xx SoC integrates DOCSIS/EuroDOCSIS features and routing.
There are many 33xx variants. Only those with a TLB will be supported:
| Chip | CPU MHz | USB Device | VoIP | WiFi | DOCSIS | TLB | Product ID | -march | Surfboard |
|---|---|---|---|---|---|---|---|---|---|
| bcm3300 | n/a | - | - | - | 1.0/1.1 | Yes | - | mips32 | 3100 |
| bcm3302 | ? | ? | ? | ? | - | ? | ? | ? | ? |
| bcm3345 | 140Mhz MIPS (1x) | 1.1 | - | - | 1.0/1.1 | Yes? | 0x28000 | mips32 | 4200 |
| bcm3348 | 200Mhz MIPS (1x) | 1.1 | - | - | 1.0/1.1/2.0 | Yes | ? | mips32 | 5100 |
| bcm3349 | 200Mhz MIPS (1x) | 1.1 | - | EBI/PCMCIA | 1.0/1.1/2.0 | Yes | ? | mips32? | 5101 |
| bcm3350 | 100Mhz MIPS (1x) | 1.1 | - | - | 1.0/1.1 | No | 0x28000 | mips32 | 4100 |
| bcm3368 | 300Mhz MIPS (1x) | 1.1 | 2 lines | Expansion Bus | 2.0 | Yes | ? | mips32 | - |
| bcm3380 | 333Mhz MIPS (2x) | 2.0 x2 | 2 lines | miniPCIe | 3.0 | Yes | ? | mips32 | - |
| bcm3382 | 400Mhz MIPS (2x) | - | 2 lines | - | 3.0 | Yes | ? | mips32 | 6182 |
| bcm3383 | 600Mhz MIPS (2x) | 2.0 | 2 lines | miniPCIe | 3.0 | Yes | ? | mips32 | - |
| bcm3384 | 600Mhz MIPS (2x) | 2.0 | ? | miniPCIe | 3.0 | Yes | ? | mips32 | - |
| bcm3390 | 1.5Ghz ARM (2x), 675Mhz MIPS (2x) | 2.0/3.0 | - | miniPCIe | 3.1 | Yes | ? | armv7-a/mips32 | 8200 |
This chip does not include a CPU itself.
Known platforms:
This chip seems to be a general-purpose MIPS CPU. It is usually included with other platforms like bcm47xx and such.
Known platforms:
Known platforms:
Known platforms:
Source code:
Known platforms:
MIPS R3000 CPU without a TLB (random register always reads a 0)
Note: Ralf says this is just mostly R3000-*compatible*, so -march=mips32 is safer.
http://www.datasheetcatalog.org/datasheets/134/404172_DS.pdf
read_c0_prid() ⇒ 0x28000
NS16550 serial UART
i82559 Ethernet
Used in the SB4100 cable modem
Known platforms:
Known platforms:
As per the readme for Broadcom's open source bootloader for the bcm3384, the SoC has 2 big-endian MIPS32R1 processors:
The Viper core runs first, performing tasks including basic peripheral initialisation and preperation of the Linux image for the Zephyr.
Firmware and additional sources available for Technicolor TC7210 and TC7230
Known platforms:
This repo appears to provide some information (header files, register layout, and some pinouts) of the BCM3390 SoC.
There are some kernel code that related to BCM3390A0
Also this one: https://github.com/pombredanne/stblinux-3.14/tree/master/linux
The support for Broadcom 33xx is at this state :
The Netgear CVG834G uses a bcm33xx chip and has GPL'd eCos. Netgear modified the Atlas driver in eCos to add the bcm3350.
Surfboard modems use a VxWorks bootloader (headers). For other modems, the official broadcom bootloaders are used (BOLT and cmboot); both bootloaders are proprietary. BOLT is used on bcm3384 and later, especially on bcm3390.
If a device is using the official broadcom bootloader (cmboot), it is possible to determine whether secure boot is enabled by looking for a “Cust key size” message on the serial console.
It should be noted that secure boot != secure app, where the former refers to bootrom validation of code stored in flash, and secure app refers to the validation of images passed to cmboot.
While secure boot might not let you replace cmboot with another bootloader, it is still possible to boot up a 2nd-stage bootloader if secure app is not enabled.
Cable modems like Netgear CG3100D use a special proprietary bootloader called Aeolus. Broadcom has decided to open-source the Aeolus implementation for BCM3384. Although CG3100D is based on BCM3380, the ProgramStore utility from BCM3384's Aeolus can still be used to prepend necessary headers and compress the OpenWrt firmware image.
There is a U-Boot port for Netgear CG3100D by Noltari, who's also a core OpenWrt contributor. It only boots in RAM and almost everything (including ethernet and flash) does not work. See netgear_cg3100d_v3 for how to load it to your device's memory.