[PATCH v3] ath79: add support for onion omega

Mike Bernardo mike at potatoslicer.com
Mon Aug 23 02:47:14 PDT 2021


Hi,

Thanks for the reply, I did not realize that this is for an Omega rather than Omega2+ which is what I have :facepalm:

It looks like there is already support for the omega2+, which is working for me right now.


> On 2021/08/22, at 17:25:02 CDT (-05:00), Lech Perczak <lech.perczak at gmail.com> wrote:
> 
> Hi,
> Answer below.
> 
> W dniu 2021-08-22 o 21:29, Mike Bernardo pisze:
>> Hi All,
>> 
>> Thanks Jan-Niklas for working on this! I am trying to test this on my onion omega2+ (in the arduino dock) .. consoled in via a TTL serial adapter and I tried doing a forced sysupgrade to openwrt-ath79-generic-onion_omega-squashfs-sysupgrade.bin which I built by applying the patch to v21.02.0-rc4 (134ac824c5a154edbbe1c581bcbc42d265dc20c0). I tried forcing after sysupgrade said that it didn't support omega2p .. now it won't boot, any ideas? Boot attempt below.
>> 
>> Note that the below is after I tried flashing openwrt-ath79-generic-onion_omega-squashfs-factory.bin via usb (filename omega2.bin put on a FAT16 filesystem and you select usb flash in the menu after tapping the reset button on powerup. Failing with the same message though.
>> 
>> --
>> 
>> Board: Onion Omega2 APSoC DRAM:  128 MB
>> relocate_code Pointer at: 87f60000
>> ******************************
>> Software System Reset Occurred
>> ******************************
>> flash manufacture id: c2, device id 20 19
>> find flash: MX25L25635E
>> *** Warning - bad CRC, using default environment
>> 
>> ============================================
>> Onion Omega2 UBoot Version: 4.3.0.3
>> --------------------------------------------
>> ASIC 7628_MP (Port5<->None)
>> DRAM component: 1024 Mbits DDR, width 16
>> DRAM bus: 16 bit
>> Total memory: 128 MBytes
>> Flash component: SPI Flash
>> Date:Oct 18 2016  Time:17:29:05
>> ============================================
>> icache: sets:512, ways:4, linesz:32 ,total:65536
>> dcache: sets:256, ways:4, linesz:32 ,total:32768
>> CPU freq = 575 MHZ
>> Estimated memory size = 128 Mbytes
>> Resetting MT7628 PHY.
>> Initializing MT7688 GPIO system.
>> 
>> 
>> **************************************
>> * Hold Reset button for more options *
>> **************************************
>> 
>> 
>> 
>> Boot Linux from Flash NO RESET PRESSED.
>> ## Booting image at bc050000 ...
>> Bad Magic Number,01000000
> 
> Long story short, you tried loading an image for ath79 architecture (QCA9331 in this case) on an MT7628 board. You probably need to use U-boot console to flash correct image for your device over TFTP.
>> 
>> 
>>> On 2021/08/22, at 07:18:32 CDT (-05:00), Adrian Schmutzler <mail at adrianschmutzler.de> wrote:
>>> 
>>> Hi,
>>> 
>>>> -----Original Message-----
>>>> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
>>>> On Behalf Of Jan-Niklas Burfeind
>>>> Sent: Samstag, 14. August 2021 15:55
>>>> To: openwrt-devel at lists.openwrt.org
>>>> Cc: openwrt at sebastianschaper.net; mail at david-bauer.net; Jan-Niklas
>>>> Burfeind
>>>> Subject: [PATCH v3] ath79: add support for onion omega
>>> some inline comments below.
>>> 
>>>> The Onion Omega is a hardware development platform with built-in WiFi.
>>>> 
>>>> https://onioniot.github.io/wiki/
>>>> 
>>>> Specifications:
>>>> - QCA9331 @ 400 MHz (MIPS 24Kc Big-Endian Processor)
>>>> - 64MB of DDR2 RAM running at 400 MHz
>>>> - 16MB of on-board flash storage
>>>> - Support for USB 2.0
>>>> - Support for Ethernet at 100 Mbps
>>>> - 802.11b/g/n WiFi at 150 Mbps
>>>> - 18 digital GPIOs
>>>> - A single Serial UART
>>>> - Support for SPI
>>>> - Support for I2S
>>>> 
>>>> Flash instructions:
>>>> The device is running OpenWrt upon release using the ar71xx target.
>>>> Both a sysupgrade
>>>> and uploading the factory image using u-boots web-UI do work fine.
>>>> 
>>>> Depending on the ssh client, it might be necessary to enable outdated
>>>> KeyExchange methods e.g. in the clients ssh-config:
>>>> 
>>>> Host 192.168.1.1
>>>>        KexAlgorithms +diffie-hellman-group1-sha1
>>>> 
>>>> The stock credentials are: root onioneer
>>>> 
>>>> For u-boots web-UI manually configure `192.168.1.2/24` on your computer,
>>>> connect to `192.168.1.1`.
>>>> 
>>>> MAC addresses as verified by OEM firmware:
>>>> 2G       phy0      label
>>>> LAN      eth0      label - 1
>>>> 
>>>> LAN is only available in combination with an optional expansion dock.
>>>> 
>>>> Based on vendor acked commit:
>>>> commit 5cd49bb067ca ("ar71xx: add support for Onion Omega")
>>>> 
>>>> Partly reverts:
>>>> commit fc553c7e4c8e ("ath79: drop unused/incomplete dts")
>>>> 
>>>> Signed-off-by: Jan-Niklas Burfeind <git at aiyionpri.me>
>>>> ---
>>>> kmod-usb-chipidea2 is now included as well as tested; usb devices are now
>>>> recognized.
>>>> 
>>>> I added the usb vbus section, like the pisen wmm003n has it and verified the
>>>> gpio looking at the ar71xx commit.
>>>> 
>>>> target/linux/ath79/dts/ar9331_onion_omega.dts | 137
>>>> ++++++++++++++++++
>>>> .../generic/base-files/etc/board.d/02_network |   1 +
>>>> target/linux/ath79/image/generic.mk           |  13 ++
>>>> 3 files changed, 151 insertions(+)
>>>> create mode 100644 target/linux/ath79/dts/ar9331_onion_omega.dts
>>>> 
>>>> diff --git a/target/linux/ath79/dts/ar9331_onion_omega.dts
>>>> b/target/linux/ath79/dts/ar9331_onion_omega.dts
>>>> new file mode 100644
>>>> index 0000000000..43a0b2f392
>>>> --- /dev/null
>>>> +++ b/target/linux/ath79/dts/ar9331_onion_omega.dts
>>>> @@ -0,0 +1,137 @@
>>>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>>>> +
>>>> +#include <dt-bindings/gpio/gpio.h>
>>>> +#include <dt-bindings/input/input.h>
>>>> +
>>>> +#include "ar9331.dtsi"
>>> This include needs to be before the others.
>>> 
>>>> +
>>>> +/ {
>>>> +	model = "Onion Omega";
>>>> +	compatible = "onion,omega", "qca,ar9331";
>>>> +
>>>> +	aliases {
>>>> +		serial0 = &uart;
>>> You could add "label-mac-device = &wmac" here if your commit message is correct.
>>> 
>>>> +		led-boot = &led_system;
>>>> +		led-failsafe = &led_system;
>>>> +		led-running = &led_system;
>>>> +		led-upgrade = &led_system;
>>>> +	};
>>>> +
>>>> +	leds {
>>>> +		compatible = "gpio-leds";
>>>> +
>>>> +		led_system: system {
>>>> +			label = "amber:system";
>>>> +			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
>>>> +		};
>>>> +	};
>>>> +
>>>> +	keys {
>>>> +		compatible = "gpio-keys";
>>>> +		poll-interval = <100>;
>>> Poll-interval can be dropped with "gpio-keys".
>>> 
>>>> +
>>>> +		reset {
>>>> +			label = "reset";
>>>> +			linux,code = <KEY_RESTART>;
>>>> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
>>>> +			debounce-interval = <60>;
>>>> +		};
>>>> +	};
>>>> +
>>>> +	reg_usb_vbus: reg_usb_vbus {
>>>> +		compatible = "regulator-fixed";
>>>> +		regulator-name = "usb_vbus";
>>>> +		regulator-min-microvolt = <5000000>;
>>>> +		regulator-max-microvolt = <5000000>;
>>>> +		gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
>>>> +		enable-active-high;
>>>> +	};
>>>> +};
>>>> +
>>>> +&ref {
>>>> +	clock-frequency = <25000000>;
>>>> +};
>>>> +
>>>> +&gpio {
>>>> +	status = "okay";
>>>> +};
>>> gpio is enabled by default, this block can be dropped.
>>> 
>>>> +
>>>> +&usb {
>>>> +	status = "okay";
>>>> +
>>>> +	vbus-supply = <&reg_usb_vbus>;
>>>> +	dr_mode = "host";
>>>> +};
>>>> +
>>>> +&usb_phy {
>>>> +	status = "okay";
>>>> +};
>>>> +
>>>> +&eth0 {
>>>> +	status = "okay";
>>>> +
>>>> +	compatible = "syscon", "simple-mfd";
>>>> +};
>>>> +
>>>> +&eth1 {
>>>> +	status = "okay";
>>>> +
>>>> +	nvmem-cells = <&macaddr_uboot_1fc00>;
>>>> +	nvmem-cell-names = "mac-address";
>>>> +	mac-address-increment = <(-1)>;
>>>> +
>>>> +	gmac-config {
>>>> +		device = <&gmac>;
>>>> +		switch-phy-addr-swap = <4>;
>>>> +		switch-phy-swap = <4>;
>>>> +	};
>>>> +};
>>>> +
>>>> +&spi {
>>>> +	status = "okay";
>>>> +
>>>> +	flash at 0 {
>>>> +		compatible = "jedec,spi-nor";
>>>> +		spi-max-frequency = <25000000>;
>>>> +		reg = <0>;
>>>> +
>>>> +		partitions {
>>>> +			compatible = "fixed-partitions";
>>>> +			#address-cells = <1>;
>>>> +			#size-cells = <1>;
>>>> +
>>>> +			uboot: partition at 0 {
>>>> +				label = "u-boot";
>>>> +				reg = <0x000000 0x020000>;
>>>> +				read-only;
>>>> +				compatible = "nvmem-cells";
>>>> +				#address-cells = <1>;
>>>> +				#size-cells = <1>;
>>>> +
>>>> +				macaddr_uboot_1fc00: macaddr at 1fc00 {
>>>> +					reg = <0x1fc00 0x6>;
>>>> +				};
>>>> +			};
>>> It's common practice at the moment to put a separate block for defining the MAC addresses at the end of the file.
>>> Please do so, just look at any other DTS file in recent master.
>>> 
>>>> +
>>>> +			partition at 20000 {
>>>> +				compatible = "tplink,firmware";
>>>> +				label = "firmware";
>>>> +				reg = <0x020000 0xfd0000>;
>>>> +			};
>>>> +
>>>> +			art: partition at ff0000 {
>>>> +				label = "art";
>>>> +				reg = <0xff0000 0x010000>;
>>>> +				read-only;
>>>> +			};
>>>> +		};
>>>> +	};
>>>> +};
>>>> +
>>>> +&wmac {
>>>> +	status = "okay";
>>>> +
>>>> +	mtd-cal-data = <&art 0x1000>;
>>> I personally prefer an empty line after mtd-cal-data.
>>> 
>>> Best
>>> 
>>> Adrian
>>> 
>>>> +	nvmem-cells = <&macaddr_uboot_1fc00>;
>>>> +	nvmem-cell-names = "mac-address";
>>>> +};
>>>> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network
>>>> b/target/linux/ath79/generic/base-files/etc/board.d/02_network
>>>> index 4fe7fbc027..b859c64633 100644
>>>> --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
>>>> +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
>>>> @@ -45,6 +45,7 @@ ath79_setup_interfaces()
>>>> 	netgear,ex7300|\
>>>> 	ocedo,koala|\
>>>> 	ocedo,raccoon|\
>>>> +	onion,omega|\
>>>> 	openmesh,mr600-v1|\
>>>> 	openmesh,mr600-v2|\
>>>> 	openmesh,mr900-v1|\
>>>> diff --git a/target/linux/ath79/image/generic.mk
>>>> b/target/linux/ath79/image/generic.mk
>>>> index 2abe1b7307..6e9ff01cc0 100644
>>>> --- a/target/linux/ath79/image/generic.mk
>>>> +++ b/target/linux/ath79/image/generic.mk
>>>> @@ -1653,6 +1653,19 @@ define Device/ocedo_ursus  endef
>>>> TARGET_DEVICES += ocedo_ursus
>>>> 
>>>> +define Device/onion_omega
>>>> +  $(Device/tplink-16mlzma)
>>>> +  SOC := ar9331
>>>> +  DEVICE_VENDOR := Onion
>>>> +  DEVICE_MODEL := Omega
>>>> +  DEVICE_PACKAGES := kmod-usb-chipidea2
>>>> +  SUPPORTED_DEVICES += onion-omega
>>>> +  KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
>>>> +  IMAGE_SIZE := 16192k
>>>> +  TPLINK_HWID := 0x04700001
>>>> +endef
>>>> +TARGET_DEVICES += onion_omega
>>>> +
>>>> define Device/openmesh_common_64k
>>>>   DEVICE_VENDOR := OpenMesh
>>>>   DEVICE_PACKAGES := uboot-envtools
>>>> --
>>>> 2.32.0
>>>> 
>>>> 
>>>> _______________________________________________
>>>> openwrt-devel mailing list
>>>> openwrt-devel at lists.openwrt.org
>>>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>>> _______________________________________________
>>> openwrt-devel mailing list
>>> openwrt-devel at lists.openwrt.org
>>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>> 
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 
> 
> -- 
> Pozdrawiam,
> Lech Perczak
> lech.perczak at gmail.com
> Mobile: +48 694 309 185
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel




More information about the openwrt-devel mailing list