BCM68380 device support

Hello!

BCM68380 is SoC for loads of ONT clients. Very popular, and I would like to install OpenWRT on these devices.

How can I find a person, who could help me with that? May be a donation will help? :slight_smile:

Lots of questions, and don't know how to start. :confused:

It looks like in the case of SoC Broadcom everything is bad. Perhaps it will be better to unite

But where do you start to develop support for another SoC?

2 years after original post and still no support for the BCM68380 :unamused:

What, apart from the mere passing of time, made you believe that this situation would have changed? It's Broadcom after all, it won't be supported in 20 years either.

2 Likes

Thanks for your message. Since this processor is not very uncommon; I expected it would have been implemented during the time passed.

And despite it being Broadcom there does seems to be enough information out there to get this one implemented.

great, let us know when you're done.

1 Like

To expand a little on slh’s answer, it’s very unlikely anyone will choose to create SOC support for a Broadcom device as broadcom make it as difficult as possible to support modern kernels. They provide zero documentation, unless you’re a device vendor, no source code and only target a single, old, kernel revision with their closed source blobs.

To support a Broadcom device a dev would need to write all the kernel support for the SOC themselves and would still be left with a device with no wifi support and very limited functionality.

2 Likes

hi
please dont be so negative.
there already a basic support for this soc in u-boot.
there is also a dtsi file and a dtb for gerg board....
so thats something to build on.
that soc is similar to bcm63268 and uses compatibles ...
i am not giving false hope either to any one am not expert or somthing
but what it will take to use same route like 63268 ?
here is dtsi:

// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2018 Philippe Reynes <philippe.reynes@softathome.com>
 */

#include "skeleton.dtsi"

/ {
	compatible = "brcm,bcm6838";

	cpus {
		reg = <0x14e00000 0x4>;
		#address-cells = <1>;
		#size-cells = <0>;
		u-boot,dm-pre-reloc;

		cpu@0 {
			compatible = "brcm,bcm6838-cpu", "mips,mips4Kc";
			device_type = "cpu";
			reg = <0>;
			u-boot,dm-pre-reloc;
		};

		cpu@1 {
			compatible = "brcm,bcm6838-cpu", "mips,mips4Kc";
			device_type = "cpu";
			reg = <1>;
			u-boot,dm-pre-reloc;
		};
	};

	clocks {
		compatible = "simple-bus";
		u-boot,dm-pre-reloc;

		periph_osc: periph-osc {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <50000000>;
			u-boot,dm-pre-reloc;
		};
	};

	ubus {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		u-boot,dm-pre-reloc;

		memory: memory-controller@12000000 {
			compatible = "brcm,bcm6328-mc";
			reg = <0x12000000 0x1000>;
			u-boot,dm-pre-reloc;
		};

		gpio_test_port: syscon@14e00294 {
			compatible = "syscon";
			reg = <0x14e00294 0x1c>;
		};

		pinctrl: pinctrl {
			compatible = "brcm,bcm6838-pinctrl";
			regmap = <&gpio_test_port>;
			brcm,pins-count = <74>;
			brcm,functions-count = <8>;
		};

		uart0: serial@14e00500 {
			compatible = "brcm,bcm6345-uart";
			reg = <0x14e00500 0x18>;
			clocks = <&periph_osc>;

			status = "disabled";
		};

		wdt0: watchdog@14e002d0 {
			compatible = "brcm,bcm6345-wdt";
			reg = <0x14e002d0 0xc>;
			clocks = <&periph_osc>;
		};

		wdt1: watchdog@14e002dc {
			compatible = "brcm,bcm6345-wdt";
			reg = <0x14e002dc 0xc>;
			clocks = <&periph_osc>;
		};

		wdt-reboot {
			compatible = "wdt-reboot";
			wdt = <&wdt0>;
		};

		leds: led-controller@14e00f00 {
			compatible = "brcm,bcm6328-leds";
			reg = <0x14e00f00 0x28>;
			#address-cells = <1>;
			#size-cells = <0>;

			status = "disabled";
		};

		gpio_lo: gpio-controller@14e00100 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00100 0x4>, <0x14e0012c 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		gpio_mid0: gpio-controller@14e00104 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00104 0x4>, <0x14e00130 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		gpio_mid1: gpio-controller@14e00108 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00108 0x4>, <0x14e00134 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		nand: nand-controller@14e02200 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "brcm,nand-bcm6838",
				     "brcm,brcmnand-v5.0",
				     "brcm,brcmnand";
			reg-names = "nand", "nand-int-base", "nand-cache";
			reg = <0x14e02200 0x180>,
			      <0x14e000f0 0x10>,
			      <0x14e02600 0x180>;
			status = "disabled";
		};
	};
};


then dtb for some board :

// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2018 Philippe Reynes <philippe.reynes@softathome.com>
 */

#include "skeleton.dtsi"

/ {
	compatible = "brcm,bcm6838";

	cpus {
		reg = <0x14e00000 0x4>;
		#address-cells = <1>;
		#size-cells = <0>;
		u-boot,dm-pre-reloc;

		cpu@0 {
			compatible = "brcm,bcm6838-cpu", "mips,mips4Kc";
			device_type = "cpu";
			reg = <0>;
			u-boot,dm-pre-reloc;
		};

		cpu@1 {
			compatible = "brcm,bcm6838-cpu", "mips,mips4Kc";
			device_type = "cpu";
			reg = <1>;
			u-boot,dm-pre-reloc;
		};
	};

	clocks {
		compatible = "simple-bus";
		u-boot,dm-pre-reloc;

		periph_osc: periph-osc {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <50000000>;
			u-boot,dm-pre-reloc;
		};
	};

	ubus {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		u-boot,dm-pre-reloc;

		memory: memory-controller@12000000 {
			compatible = "brcm,bcm6328-mc";
			reg = <0x12000000 0x1000>;
			u-boot,dm-pre-reloc;
		};

		gpio_test_port: syscon@14e00294 {
			compatible = "syscon";
			reg = <0x14e00294 0x1c>;
		};

		pinctrl: pinctrl {
			compatible = "brcm,bcm6838-pinctrl";
			regmap = <&gpio_test_port>;
			brcm,pins-count = <74>;
			brcm,functions-count = <8>;
		};

		uart0: serial@14e00500 {
			compatible = "brcm,bcm6345-uart";
			reg = <0x14e00500 0x18>;
			clocks = <&periph_osc>;

			status = "disabled";
		};

		wdt0: watchdog@14e002d0 {
			compatible = "brcm,bcm6345-wdt";
			reg = <0x14e002d0 0xc>;
			clocks = <&periph_osc>;
		};

		wdt1: watchdog@14e002dc {
			compatible = "brcm,bcm6345-wdt";
			reg = <0x14e002dc 0xc>;
			clocks = <&periph_osc>;
		};

		wdt-reboot {
			compatible = "wdt-reboot";
			wdt = <&wdt0>;
		};

		leds: led-controller@14e00f00 {
			compatible = "brcm,bcm6328-leds";
			reg = <0x14e00f00 0x28>;
			#address-cells = <1>;
			#size-cells = <0>;

			status = "disabled";
		};

		gpio_lo: gpio-controller@14e00100 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00100 0x4>, <0x14e0012c 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		gpio_mid0: gpio-controller@14e00104 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00104 0x4>, <0x14e00130 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		gpio_mid1: gpio-controller@14e00108 {
			compatible = "brcm,bcm6345-gpio";
			reg = <0x14e00108 0x4>, <0x14e00134 0x4>;
			gpio-controller;
			#gpio-cells = <2>;

			status = "disabled";
		};

		nand: nand-controller@14e02200 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "brcm,nand-bcm6838",
				     "brcm,brcmnand-v5.0",
				     "brcm,brcmnand";
			reg-names = "nand", "nand-int-base", "nand-cache";
			reg = <0x14e02200 0x180>,
			      <0x14e000f0 0x10>,
			      <0x14e02600 0x180>;
			status = "disabled";
		};
	};
};

even if that soc isnt going mainline or upstream or if it does and needed too much efforts and time to maintain it and no support for pon or wifi
i realy dont see why not make an effort to make them supported if there are peapole willing to make it happen.
personnelly i have lot of devices based on that , more than
20 of arcadyn prv3399 (livebox fibra)alone_with no gpon epon_
then there is zte f680v4
sagem 5655v2 witch have u-boot supported a long time ago_ may be from the work of noltari _ who by the way does great work in bmips and cfe -thanks man!_
rv6699 there is lot of infos in russian site 4pda for this device
askey rtf3505vw
gpt 2541gnac
igat gw040
u-fiber nano g
and others
i see those devices as probable cheap gigabit openflow switchs.

1 Like

Please don’t misunderstand, We’re not being negative, just realistic.

I’m personally not at all interested in bringing up anything Broadcom and I have a Broadcom router in my network.

If you have the interest and the time then absolutely have at it and see if you can get support upstreamed!

1 Like

Its possible to run OpenWRT on BCM68380 Chip.

There is a device, model Askey RTF3505VW based on BCM68380 used by a Brazilian internet provider who running a custom self build OpenWRT.

Here its a bootloader capture from UART Serial port.

Base: 4.14_04ACCUpatch4
CFE version 1.0.38-117.2 for BCM96838 (32bit,SP,BE)
Build Date: Mon Jul 31 17:58:59 CST 2017 (openwrt@sw3-pc)
Copyright (C) 2000-2013 Broadcom Corporation.

Chip ID: BCM68380_B0, MIPS: 600MHz, DDR: 533MHz, Bus: 240MHz
RDP: 800MHz
Main Thread: TP0
Total Memory: 134217728 bytes (128MB)
Boot Address: 0xbfc00000

In this bootlog you can see the info about build Build Date: Mon Jul 31 17:58:59 CST 2017 (openwrt@sw3-pc) using build for BCM96838; This can indicate a compatibility between chips.

After dump all firmware, seeking files seems like a OpenWRT environment with a modify shell who restrict most actions like write files.

It's possible to run Broadcom's version/hack of openwrt on their own hardware, yes, most/all Broadcom devices do this.

It's also possible to put a router on the moon, if you spend enough money, and time.

Same goes for the BCM support.

Hope you're rich.

1 Like

Your device is running a Broadcom SDK derived firmware, which is loaded with non-free binary blobs and is not open source and definitely not openwrt

1 Like

hi
dtsi is missing enet
but dont care right now.
to get started for bcm6838 need to creat an initramfs with CFE header+rfs+kernel
kernel =vmlinux (append dtb lzma compressed )
but what about cferam.000 or uboot ?
nd why in cfe Boot Address: 0xbfc00000 and dtsi somthing like 0x14e00000 ?
why those address differ from boardparam hwdefs ...?

br.

I'm sure Broadcom will be happy to answer all your questions, it's their firmware after all...

1 Like

hi
will find it anyways with or without you.
thanx for your realy good help.
you and your pal are realy doing great job
your technical knowledge and insight are awsome.
i am glad that this is not always the sad mentality around here.
i know were brcm is & i know were you are.
i did not ask YOU personnelly for anything
last time i checked this was a technical forum for open sources not owned by you.
next time if you are not helping keep your negative thoughts for your self.
greeting.

.

Fingers X:ed.

What an amazing coincidence, I know where I am too.

And that's the problem right there, Broadcom isn't open source...
But hey, enjoy your crippled firmware.

Negative <> realistic.

1 Like

It is all about trial & error... Just try both addresses :grinning:

cferam.000, you can dump it from the stock firmware

Nand-based Broadcom devices usually have 1 spare partition, which could be a good place to install OpenWRT.

1 Like