SigmaStar SSD201 is a dual-core Cortex-A7 processor with 64MB RAM onchip that is designed for smart HD displays. We’ve previously seen it in Industio 7-inch smart display running Linux, but if you want to modify anything you’d need sign an NDA before getting the SDK.
Luckily there’s an open-source community named linux-chenxing that aims to bring mainline support to those low-cost SigmaStar processor to mainline, the same way linux-sunxi is working on Allwinner processors. Daniel Palmer noticed MYZR recently launched GW300 4G LTE industrial gateway with specifications that looked familiar.
GW300 specifications from manufacturer’s website:
- Processor – Arm Cortex-A7 dual-core processor @ 1.2GHz
- Memory – 64MB RAM
- Storage – 128MByte Flash
- Connectivity – Ethernet and 4G LTE with high-gain antenna
- Serial – RS485/ RS232 via 5-pin terminal block
- Misc – RTC
- Power Supply – 12V to 24V DC input
- Dimensions – 127.7 x 87.5 x 30 mm
- Temperature Range – -20°C to +75°C
The gateway runs Linux and supports ModBus and MQTT for all sort of industrial IoT applications. But just to make sure Daniel bought a sample and took it apart…
It turns about this particular model is based on a SigmaStar SSD202D dual-core Cortex-A7 processor that is supposed to come with 128MB RAM, and also includes a LongSung M5710 4G LTE Cat 1 modem (See AT commands set PDF), ISL1208 RTC chip, SIPEX 3232EE RS232 transceiver, and SP3485 RS485 transceiver.
What even more interesting that he managed to port mainline U-boot and mainline Linux to the gateway:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
... ! U-Boot SPL 2021.01-rc4-00137-gb3f4baadc5b4-dirty (Jan 24 2021 - 18:57:06 +0900) cpuid: 410fc075, mstar chipid: f0 normal power on ... DRAM: 128 MiB ... Warning: emac@2a2000 (eth0) using random MAC address - ce:f7:e1:8a:a2:5d eth0: emac@2a2000 => run boot_rescue ... No size specified -> Using max size (16887808) Read 16887808 bytes from volume rescue to 22000000 ## Loading kernel from FIT Image at 22000000 ... Using 'gw302' configuration Trying 'kernel@0' kernel subimage Description: unavailable Type: Kernel Image Compression: uncompressed Data Start: 0x220000b0 Data Size: 3450368 Bytes = 3.3 MiB Architecture: ARM OS: Linux Load Address: 0x22800000 Entry Point: 0x22800000 Hash algo: crc32 Hash value: e0a8fe63 Hash algo: sha1 Hash value: d18e5f4096db31bfe2f41dcf7be5234dc2e5455e Verifying Hash Integrity ... crc32+ sha1+ OK ## Loading ramdisk from FIT Image at 22000000 ... Using 'gw302' configuration Trying 'ramdisk@0' ramdisk subimage Description: unavailable Type: RAMDisk Image Compression: uncompressed Data Start: 0x223743a0 Data Size: 2666374 Bytes = 2.5 MiB Architecture: ARM OS: Linux Load Address: 0x22e00000 Entry Point: unavailable Hash algo: crc32 Hash value: 40cc8f2a Hash algo: sha1 Hash value: 4d0663b152157f6257d08a8b34564b10c43fdb2c Verifying Hash Integrity ... crc32+ sha1+ OK Loading ramdisk from 0x223743a0 to 0x22e00000 ## Loading fdt from FIT Image at 22000000 ... Using 'gw302' configuration Trying 'fdt@2' fdt subimage Description: unavailable Type: Flat Device Tree Compression: uncompressed Data Start: 0x2235f430 Data Size: 42786 Bytes = 41.8 KiB Architecture: ARM Load Address: 0x22d00000 Hash algo: crc32 Hash value: ae1c50c7 Hash algo: sha1 Hash value: ec0fded850a2e7aa1dc82574a105ee34db6f2b4f Verifying Hash Integrity ... crc32+ sha1+ OK Loading fdt from 0x2235f430 to 0x22d00000 Booting using the fdt blob at 0x22d00000 Loading Kernel Image Loading Ramdisk to 26cfb000, end 26f85f86 ... OK Loading Device Tree to 26ced000, end 26cfa721 ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.11.0-rc4+ (daniel@shiro) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2020.08-1318-ge7000b15fe) 10.2.0, GNU ld (GNU Binutils) 2.1 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: GW302 ... [ 11.223520] block ubiblock0_4: created from ubi0:4(rootfs) [ 11.229606] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 11.244896] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 11.251480] clk: Not disabling unused clocks [ 11.255797] ALSA device list: [ 11.258778] No soundcards found. [ 11.264211] Freeing unused kernel memory: 1024K [ 11.293848] Run /init as init process |
That’s U-boot 2021-01 RC4 with Linux 5.11 RC4 boot from the SPI NAND flash. You can check out the full boot log if you are interested. Many things are already working in Linux 5.11, and Daniel submitted a patch to add support the M5710 modem in Linux 5.12. Eventually, OpenWrt may be ported to the gateway if there’s enough interest from the community. You’ll find additional information on Github.
There may seen be more progress made on open-source software around SigmaStar processors, as I’ve been told the company released the SDK publicly on their website where registration is required together with a China Mobile number, and Widora is current developing a SSD202D module and posted (parts of) the SDK on Github.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Community == one guy with a dirty desk that buys too much crap from Taobao 😀
As someone who buys too much stuff from AliExpress
1) How do you get started developing on a board with no info / limited / outdated SDK?
2) How can I too, buy from Taobao instead?
Taobao has something called the consolidating warehouse. You don’t need to use a third party. First identify EVERYTHING you want to buy from taobao. I recommend adding lots of cheap stuff like jumper wires, connectors, etc. Then buy all of the things you want and select delivery to the international warehouse. That step of delivery is quite inexpensive, a few yuan. Next login and start checking your consolidated warehouse account. Watch for all of your orders to arrive at the warehouse. When they all arrive select the option to mail then to your destination country. Taobao will package them up… Read more »
It’s the first time I hear about that method. I always thought the only way to order from outside of China was to use a Taobao forwarder.
Taobao built their own forwarder about five years ago. Too many people were getting ripped off by the third party ones.
>1) How do you get started developing on a >board with no info / limited / outdated SDK? All I had originally was an IP camera that reported that it was a Cortex A7 from /proc/cpuinfo.. I had never seen a QFN A7 before so I started pulling apart the kernel that was on it. I got mainline booting to shell, gpio and pinctrl working without anything but the IP camera and after that the u-boot and kernel source turned up and then by searching for the register descriptions in there it was possible to see the ethernet is a… Read more »
Didn’t know sigmastar still was around
They aren’t. There was a chain of acquisitions and I believe Mediatek owns them now.
Sigmastar is still around. They are a fully owned subsidiary of mediatek but it seems mediatek only wanted the TV part of the company so they left the remainder to do their own thing.
Good job Daniel!
This tiny module looks nice. It’s probably hard to integrate it onto a small board as is though. However I’m now seeing this 88-pin chip, which looks easy to solder 🙂 Probably that by keeping roughly the same layout you can make your own board with ethernet/usb/wifi on the other side and GPIOs on one or two sides. These hacker-friendly SoCs could get a great success among hobbyists.
Thanks Willy. I actually planned to make a piggy back board for the $6 version of these modules over the weekend… then I thought maybe I’d make a really stupid cluster out of these things as there are two ethernet controllers, so you could have one as an internal cluster network with a switch on the board and then the other as a physical plug. So I looked for 5 or 9 port switches with more than one RMII port for a few hours. Then I remembered macb is still a bit broken for mstar/sigmastar at the moment and decided… Read more »
hehe , usual long dependency chain 🙂
It’s always difficult to decide how to assign interfaces. Some people want two physical ones (it used to be my case), some want a switch (it’s been my case as well). Some boards use switch chips featuring two RMII ports so that you can route your ports to whatver port group you want. BTW, I seem to remember that there are cheap and easy to use chips at realtek.
I have a bunch of realtek switches for the stupid cluster board I designed that was basically 8 breadbees on a board.. The trouble is they only have ports with the PHY which would mean using the PHY port on the SoC for the internal switch and then adding external PHYs for all of the ports.
Microchip have some with PHYs and RMII ports but it’s 2 RMII ports + 3 or more PHY ports. I think that might work for the worlds worse HA setup with two SoCs.
I’m getting increasingly excited about these little SoCs the more I learn about them. Please remember to send anything you want to have in 5.12 soon though: It’s almost -rc6, and I see you have a number of things in github that would be candidates for upstream. Regarding the “stupid cluster” idea, you could make it even more hilarious by using a USB hub connected to the USB-OTG ports, with one machine acting as a virtual ethernet switch with a USB host port. I couldn’t find out from the product briefs if the USB ports support OTG, obviously it wouldn’t… Read more »
Hi Arnd, I think everything is a bit backed up on getting the clock drivers in. I still haven’t worked out how to get things that probe before the main “mpll” PLL block to work properly without having clock names in the DT and I was told not to put them in the DT. So a bit stuck there. I will try to break out some of the stuff can go before that. The previous members of this family a have a MUSB device controller alongside the host controller and there is a mux to device which gets connected to… Read more »
Ah that’s another amusing approach I hadn’t thought about. In the past my idea for my build farm was to daisy-chain devices using USB-to-OTG and emulating ethernet there (it requires zero extra device, only cables). Arguably this is ugly 🙂 Daniel, there were numerous switch chips from Micrel (now Microchip I think so they may be the ones you were talking about), Marvell and Broadcom (both expensive). There’s AR8327 which provides 2 RGMII/RMII ports and 5 PHY ports. It might be too expensive for the job since gbe-capable. I also remember finding some cheap “Vitesse” chips in some entry-level switches.… Read more »
yeah all opensource but the modem. that could do anything… we really need a (100%) opensource modem
You are going to have a long wait for an opensource modem that isn’t GSM.
I think the only thing you can really do is make sure all of the data you send via the modem is properly secured.
A few weeks ago, Pine64 said the modem on PinePhone could run Linux 5.10.
https://twitter.com/thepine64/status/1346582145557524488
It’s probably not fully open-source, but a step in the right direction.
I think quectel modems have an internal application processor and the modem processor and the linux thingy is only on the AP of the modem, not the actual radio controller.
oh yeah i knew that! at least the modem kernel can be opensource(and trusted)! thats good news! half of the job.