Add support for BCM63177 (ARM-based Broadcom xDSL SoC)

I found this TP-Link VDSL modem VX220-G2v in Australia. These are photos of its interior.

There is an unpopulated serial port (Pinout: Tx Rx GND Vcc, Config: 3.3V 8n1 115200). Here is the stock boot log.

Available CFE commands:

CFE> help
Available commands:

otpcfg              Reading/fusing potp/sotp bits
erase_misc_parti    Erase misc partition
x                   Change extra partitions size
find                Find string in NAND
comp                Compare NAND blocks
bb                  Find NAND flipped bits by comparing a read with and without ECC
fb                  Find NAND bad blocks
rn                  Read NAND contents along with spare area with ECC off
dn                  Dump NAND contents along with spare area
phy                 Set memory or registers.
meminfo             Display CFE System Memory
kernp               Updates extra bootloader parameter for kernel. To end input enter // consecutively at any time then press <enter>
sm                  Set memory or registers.
db                  Dump bytes.
dh                  Dump half-words.
dw                  Dump words.
w                   Write the whole image start from beginning of the flash
e                   Erase NAND flash
ws                  Write whole image (priviously loaded by kermit or JTAG) to flash .
ba                  set linux kernel boot argument
ldt                 load device tree blob from tftp server.
go                  goto and execute from specefic address.
loadb               load binary via network or kermit protocol.
r                   Run program from flash image or from host depending on [f/h/c] flags
p                   Print boot line and board parameter info
c                   Change booline parameters
i                   Erase persistent storage data
avs                 Change AVS config
ddr                 Change board DDR config
a                   Change board AFE ID
b                   Change board parameters
reset               Reset the board
pmdio               Pseudo MDIO access for external switches.
spi                 Legacy SPI access of external switch.
pmclog              pmclog
pmc                 pmc cmd
closeavs            pmc close avs cmd
cpufreq             set CPU frequency
force               override chipid check for images.
help                Obtain help for CFE commands

CFE> help loadb

  SUMMARY

     load binary via network or kermit protocol.

  USAGE

     loadb op address [[hostip:]filename]
      op n for network, s for serial port, f for bootfs.

This device is the new generation of the BCM63xx SoCs and uses ARMv7a Little Endian instruction set.

Similar SoC:

  1. BCM63178, see https://wikidevi.wi-cat.ru/Broadcom/SoC

  2. FreeBSD's dtb support of BCM63178

  3. Uboot support of BCM63178

  4. BCM63138

There is no suitable target in the current OpenWrt code base. I'm thinking about adding a new target for these ARM-based Broadcom xDSL SoCs. This may require some discussion here.

Since the instruction set is ARMv7a Little Endian, it should be similar to BCM2836, the SoC used in Raspberry Pi 2. The bcm27xx target can be a good starting point. I will upload a full NAND dump once I've completed it. I will also try to RAM boot the initramfs OpenWrt image compiled for Raspberry Pi 2 to see if I have any luck…

AFAIK there's no BCM *DSL support in Linux.

You clearly see CFE loader, not UBOOT.

Platform status (your SoC is not supported but you can try something based on DTS-s you found)

https://openwrt.org/docs/techref/hardware/soc/soc.broadcom.bcm63xx

63177 != 63178

AFAIK there's no BCM *DSL support in Linux.

I never expected that part to work. Even getting the Wifi to work will be hard.

You clearly see CFE loader, not UBOOT.

Yes, I know. I mentioned UBOOT support is because its existence indicates that someone knows the register layout of BCM63178 to some extent. It could serve as a starting point for determining the register address offsets.

63177 != 63178

What are the differences between these two SoCs? I would assume they are very similar, like the relationship between BCM63268, BCM63168 and BCM63167.

You can try to load network file and boot from the random != device https://openwrt.org/docs/techref/bootloader/cfe

Not hard, impossible because there is no driver for it.

there just got to be better (and easier) devices out there, waiting for support to happen, than this.

can suggest two or three, if you've got access to the US market :wink:

1 Like

there just got to be better (and easier) devices out there, waiting for support to happen, than this.

We choose to go to the Moon in this decade and do the other things, not because they are easy, but because they are hard - John F. Kennedy

can suggest two or three, if you've got access to the US market

I'm in Australia. But the general advice is to go for MTK-based devices, like DIR-853-A1.

The best information you could get right now is in the GPL source for this device.

BCM283x SoCs are very different platforms so working on that target is a dead end.

63178 looks like it’s supported upstream under ARCH_BCMBCA_CORTEXA7. A good place to start would be to add that arch to the openwrt bcm53xx target.

1 Like

Similar device found: