Broadcom BCM33xx
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.
The Broadcom BCM33xx currently only begins booting with the SB4xxx cable modems. This only worked on the dropped bcm63xx target.
Linux support
The OpenWrt support for the Broadcom BCM33xx SoC family currently only works with following models, using the target BCM63xx:3368
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
Broadcom DOCSIS
- We have no GPL'd drivers for Ethernet or DOCSIS so this makes the board pretty useless. DOCSIS would require images to be signed by CableLabs if to be used in a real environment, anyway.
What is this Broadcom 33xx stuff?
Broadcom33xx SoC integrates DOCSIS/EuroDOCSIS features and routing.
What are 33xx variants?
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 |
bcm3300
This chip does not include a CPU itself.
Known platforms:
- 3Com HomeConnect Cable Modem
- Aastra PipeRider HM200
- Ambit 60098E/U
- Arris CM200[U]
- Askey CME03x
- Cisco uBR924
- Com21 DOXport 1010
- E-Tech ICE 200
- E-Tech ITCM
- GVC USB Cable Modem
- Motorola SURFboard 3100A/B
- Samsung InfoRanger ITCM/SCM-110R
- Thomson RCA DCM 205/215/225
- Zyxel Prestige 941
bcm3302
This chip seems to be a general-purpose MIPS CPU. It is usually included with other platforms like bcm47xx and such.
bcm3345
Known platforms:
- Motorola SURFboard 4200 cable modem
- Hitron BRG-3520
bcm3348
Known platforms:
- Scientific-Atlanta WebStar DPX-2100
bcm3349
Known platforms:
- Motorola SURFboard 5101
Source code:
bcm3350
Known platforms:
- Ambit 60218P
- Ambit 60194E
- Askey CME063
- Com21 DOXport 1110
- Hitron BRG-3510
- Icable ICS-110
- Linksys BEFCMUH4/BEFCMU10
- Thomson RCA DCM 235/305
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
bcm3368
Known platforms:
- Scientific-Atlanta WebStar DPX/EPC 2203
- Thomson AGC905
bcm3380
Known platforms:
- Thomson TWG870
bcm3383
bcm3384
As per the readme for Broadcom's open source bootloader for the bcm3384, the SoC has 2 big-endian MIPS32R1 processors:
- One 'Viper' (BMIPS4355) core responsible for the cable modem/DOCSIS subsystem, running the eCos RTOS.
- One 'Zephyr' (BMIPS5000) application processor responsible for running other services, in most cases it runs a form of Linux.
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
bcm3390
Known platforms:
- Motorola/Arris/Commscope SB8200/CM8200 (Linux kernel + eCos source: Commscope SourceForge 8200)
Finished tasks
The support for Broadcom 33xx is at this state :
- Linux 2.6.x booting before failing to find init on bcm3348 (SB4200)
- Linux 2.6.x booting to BusyBox shell on bcm3349 (WebSTAR DPC2100)
TODO
- Talk with Broadcom related vendors to make them release some sources
- A u-boot port is required to get around secure boot (not secure app)/to replace the original bootloader and an ethernet driver needs to be written (binary blob Linux driver is a virtual link to eCos)
The Netgear CVG834G uses a bcm33xx chip and has GPL'd eCos. Netgear modified the Atlas driver in eCos to add the bcm3350.
- Technicolor opensourced some platforms: Github account of Technicolor
- Technicolor additional information for certain products Technicolor internal business website
- Commscope opensourced many platforms: Commscope SourceForge project list
Firmware/Bootloader
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.
Determining if secure boot is enabled
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.
cmboot: secure boot and/or secure app?
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.
Aeolus
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.
U-Boot
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.