[PATCH v3] ath79: add support for onion omega

Mike Bernardo mike at potatoslicer.com
Sun Aug 22 12:29:37 PDT 2021


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



> 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




More information about the openwrt-devel mailing list