Omega2 current defects
-
Since there is no comprehensive all-in-one list that summarizes the current problems when trying to develop for the Onion Omega2(+) platforms, I decided to make this thread. The guidelines (https://community.onion.io/topic/787/guidelines-for-posting-issues-please-read-first) only offer a list of what is already reslolved, but a list of current problems is not shown.
Please expand upon or correct the list so that it may become an informative page for people trying to find out whether mayor problems are already solved.
SPI
- Problems:
- hardware SPI, as found on the pinout diagram, can't actually be used. Only a gpio based bit-banged driver is available.
- the SPI driver transmits the MSB of the first byte in a transfer wrong in 50% of the cases (0x40 - 0xbf are wrong)
- the SPI driver can only transmit 16 bytes at time, making transfers of big data (e.g. framebuffers) slow
- References
- Known since: 13. Feb 2017
- Current Status: SPI might be usable after firmware upgrade to b176. Transfer sizes were increased to 4096 bytes. Although "We’ve observed that some SPI devices still show data corruption but others do not" might still be a problem.
SPI not usable (unless you don't want to transmit bytes between 0x40 to 0xbf). Community tries to patch the kernel (https://community.onion.io/post/12149), not integrated into official firmware yet - Official response: New firmware released.
Onion Team is aware of the problems (https://onion.freshdesk.com/support/solutions/articles/24000014450-spi-issue-resolution) and has stated that they will release a fix in Q3 or Q4 of 2017. No release yet.
I2C
- Problems:
- the I2C driver never reports a read or write error even if no device is connected to the bus
- when reading data via I2C, the read buffer is filled with 0xff if no device is present
- References
- Known since: 10 months
- Current Status: I2C usable under normal operations, no bus error reporting
- Official response: ???
I2S
- Problems:
- although I2S pins are described on the official pinout diagram (https://docs.onion.io/omega2-docs/omega2p.html), there doesn't actually exist any Onion-provided I2S driver
- References
- Known since: 10 months
- Current Status: Community member luz has achieved a breakthough with patching kernel images (http://community.onion.io/post/13811). No official fix yet.
- Official response: Use a USB audio card install and install ALSA. (http://community.onion.io/post/14104)
Non-working manuals
- Expanding the filesystem to the SD card
- Problem: When following the official manual at https://docs.onion.io/omega2-docs/boot-from-external-storage.html, the command
opkg install kmod-usb-storage-extras e2fsprogs kmod-fs-ext4
throws an error. Specifically, thekmod-fs-ext4
cannot be installed because there is a kernel version mismatch. (http://community.onion.io/topic/1139/omega2-cannot-install-kmod-fs-ext4-kmod-usb-storage-extra-kernel-version-mismatch) - Known since: 10 months
- Current status: Resolved by manually downloading the ipkg and installing it with
--nodeps
. (http://community.onion.io/post/14066) - Official fix: none
- Problem: When following the official manual at https://docs.onion.io/omega2-docs/boot-from-external-storage.html, the command
Edit 17. October 2017
Thanks to user @Rudá-Cunha for updating.GPIO Interrupts
- Problems:
- the supplied C and python libraries (based on libugpio) are not capable of processing GPIO interrupts
- References
- https://docs.onion.io/omega2-docs/gpio-python-module.html (available functions)
- https://github.com/OnionIoT/fast-gpio (controlling GPIOs faster, no interrupt support)
- https://github.com/OnionIoT/gpioIrq (polling interrupt events via filesystem approach, not really callback based)
- Current Status: The kernel module
gpio-irq
exists (https://github.com/OnionIoT/gpio-irq), but is not compiled into the latest firmware version and canot be installed viaopkg
. Onion does not supply C or Python libraries which work with this library. A test program is available at https://github.com/OnionIoT/gpio-test. Capable Users may be able to compile the kernel module themselves (https://community.onion.io/topic/2366/getting-gpio-irq-built-using-the-lede-source-path/3) - Official response: Working status unknown.
WiFi drivers
- Problems:
- Users are reporting problems using the opensource LEDE WiFi driver (kernel panics, slow transmission, no WiFi at all, data transmission stopping). The properiety driver is not released by Onion.
- References
- Current Status:
The Onion team has vowed to release a new implementation of WiFi driver on Github in Q3 of 2017, i.e., they're half a month beyond deadline as of the current time.New WiFi driver "WiFi Warp Core" released, after 2 quartals of delay, should fix most problems -- user reports awaiting. - Official response: Issues addressed through the release of a new WiFi driver.
-- Edit 28. March 2018 ---
A new light shines at the end of the tunnel. After about half a year since I created this topic, Onion IoT has released Firmware version b176 (old: b160) which addresses several issues: https://onion.io/2bt-march-27-2018/
- new, better WiFi driver "WiFi Warp Core"
- SPI bugfixes
python-spidev
package
Will retest and confirm fixes.
- Problems:
-
Place in the list:
WIFI Driver.
Prediction Q3 2017.
Until now, nothing.
Interruptions
You can use it by installing custom firmware or by compiling gpio-irq.
Official support: no
No company response
As in other topics, I have also opened a complaint even from the support and the sales part, that I requested a quote and that was never answered.
It is unfortunate to have a product launched with various problems and no company responses. And more than 8 months without a software update.
And their idea is:
Does not work on omega2, puts an arduino, makes the communication via serial and ready. Problem solved.
I2S, ADC, Interruption, DHT22, ADS1115, etc ...
-
@Maximilian-Gerhardt Congratulations! It's a very nice summary.
I hope @Lazar-Demin will feature this list - as your project - on today's 2-Bullet Tuesday.
-
Thanks @Rudá-Cunha for the input. I've added some quickly gathered info in the original post.
@György-Farkas Thanks, I'd also like this to receive some attention, but after discovering that a few of these issues have been reported since the sale of this product with no fix yet, I'm rather unoptimistic..
-
The SPI summary substantially mis-states the actual situation. See the mediatek site for the correct information.
-
@Chris-Stratton Do you have any references? What exactly is wrong? I am aware that this is kernel and/or MT7680 bug. Doesn't change the fact however that it simpy doesn't work on the newest firmware.
-
I agree.
If it is a defect of the MT7680, should not the defect have been detected when developing hardware and disclosing that it has SPI support?
-
@Maximilian-Gerhardt said in Omega2 current defects:
@Chris-Stratton Do you have any references? What exactly is wrong?
I hope @Chris-Stratton won't mind me answering in his place.
I think he was talking about this stuff:LinkIt Smart 7688 (MediaTek MT7688AN - OpenWrt)
Limitations and Known Issues
https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/limitations-and-known-issues
-
I think we should precisely differentiate three areas:
- There are bugs in the Mediatek MT7688, affecting SPI, I2S and I2C, see link in @György-Farkas' post above. If you blame Onion for using this chip, then please name a better one in the same price range having at least partially open specs. The MT7688 is nothing more than a slightly IoT-zed router chip. Its ethernet, USB, UART and WiFi hardware is solid, but its SPI was originally designed to connect the flash chip only, and things like PWM and I2C seem to have been added without much care. Sad, but certainly MediaTek's fault.
- There's not enough open documentation for the MT7688 to write solid drivers without a lot of try and error. As said, at least there is a publicly available datasheet (there was none for the Omega1's AR9331!), but it is little more than a list of register addresses and bits. No conceptual descriptions of any of the function blocks, very little context. So the drivers that exist in the open source LEDE stack have shortcomings just because the hardware is not documented properly. On the other hand, those developers who do have more information, are bound by NDAs so can't contribute to the open drivers, e.g. WiFi. This is the sad state of affairs around a only semi-open SoC chip.
- And then there's Onions strange way to (not) communicate all this properly to their users. It took an eternity until the LEDE build and uboot was opensourced, missing a lot of opportunity to get help from initially enthusiastic community members. And now, inexplicably, they don't respond to carefully collected information and hints like @Maximilian-Gerhardt 's excellent summary, and apparently don't update their firmware. IMHO, only that part is the real issue
Bottom line: there are compromises when building a $6 computer. You can argue Onion should have built another RPi instead for $30, but I am very happy they didn't, because once you know the limitations, the Omgea2 and Omega2S are fantastic devices to build small networked devices.
But Onion should actively communicate the pros and cons, admit problems, provide workarounds and quickly integrate work from others for the MT7688 into their firmware.
For example, this patch making hardware SPI usable by running it in half-duplex mode (full duplex is broken in MT7688 hardware).
As a side note: I am very curious to see how they will handle execution of the clock project - they'll need SPI for the display, probably I2S for sound, probably a ws2812 driver for the light bar. Sometimes developing a real application (vs. just cobbling together examples how to do cool stuff) helps improving the basics
-
i'm curious to know if anyone thinks that the firmware has been updated since they offered b160 in march 2017. and if it has if anyone thinks onion should have shared the build with this community. i think it has and it should have been shared.
-
As someone on this forum posted a link to the helpdesk before, I have found a (kinda) interesting article: https://onion.freshdesk.com/support/solutions/articles/24000014450-spi-issue-resolution
SPI issue resolution
Modified on: Thu, 7 Sep, 2017 at 12:52 PM
Hi everyone,We are keep getting the emails with regards to SPI issue resolution. We are currently working on a new SPI driver that will hopefully fix or at least improve this situation.We are also testing it and hope to release it in Q3 or Q4 or this year. >However, we cannot promise the full resolution of this problem. Above all, it is possible to setup software based SPI. It would, at least, have an upper limit in speed. Thank you for reading, stay tuned.
If only it was at a more visible place, like a thread from the Omega Team with a list of things being currently worked on on their progress.. Well, but here we have it, maybe in Q4 (of which 2/3 are already over), we will have a fix. Or not, like with the deadline for a new WiFi driver. I'll keep this thread updated.
-
@Maximilian-Gerhardt hello, thanks for the info. as to the wifi & spi issues it may be that since those issues directly involve the now current alarm clock on kickstarter since that device uses an omega2s it could be that onion does not want to release the current status of that firmware.
-
I've also made some minor modifications to the SPI driver:
- don't use full-duplex mode, since it does not work (seems to be HW bug)
- support for GPIO CS
- support for large buffers
In general, I mainly threw code out to rely more on the generic spi.c infrastructure. Together with some modifications to the .dts file, this resolves many of the issues that people complain about on the SPI driver. Additionally, the driver can now support 'fast read' and does not need the chunked-io parameter. This speeds up in general performance of flash accesses. Combined with a higher SPI clock speed, I have obtained more than double of the flash read performance compared to the current driver.
Example modifications to the dts file:
For CS GPIOs:cs-gpios = <0>, <0>, <&gpio1 9 0>, <&gpio1 10 0>; ... spidev@2 { compatible = "spidev"; reg = <2>; spi-max-frequency = <40000000>; }; spidev@3 { compatible = "spidev"; reg = <3>; spi-max-frequency = <40000000>; };
For better flash performance:
- m25p,chunked-io = <31>; + m25p,fast-read;
I've put the driver on github https://github.com/wdu/mt7688
-
Q4 2017 at the end and we have no resolution of Wifi and SPI and the company is worrying about launching more products with defects than solving the problems.
-
@Rudá-Cunha yes that is troubling to me also because they might have solved some issues and decided not to provide them to the group of people who funded their project. remaining silent about the issue was a primary reason i did not support the clock and if asked advised against funding the clock for this and other reasons. onion is creating a very negative corporate image that will have a negative down force on the image of the company as well as success of future projects. it's a damn shame, but management is corrupt or plain stupid. i don't know if it was widely noticed but they charged clock funders full price for 2 weeks and out of concern, i guess, of low response, started accepting near 1/2 normal pledge, to become clock pledge. this certainly negatively affected the early adopters and further promoted a negative image of the company. if they were going to drop pledge to 1/2 price they should have refunded the prior full price pledge instead of screwing early adopters.
-
Do not tell me I had great plans. Giant purchases to mass produce. But I paused for defects. They wanted to plug the hole launching with the Arduino (SPI, I2C ...).
It seems to me that they are launching products to enable the company to sustain itself, forgetting the quality.
-
Onion has updated their post indicating a SPI driver fix planned for Q3/Q4 of 2017 to state: "So far, we've tried fully disabling Full-Duplex transmissions, however, this still causes data corruption in Half-Duplex transmissions."
I've had a discussion with Pavel and Lazar concerning the SPI interface. They indicated that they are not spending much time working on it once they discovered the switch to half duplex did not fix the issue.
Their recommendation is to go with the SW bit-bang driver or if higher performance is needed add an external processor to handle the SPI communications or a hardware bridge to the SPI interface such as an i2c to SPI bridge.
-
@Chris-Ouellette that is interesting information, thanks!
However, I wonder why SPI with this halfduplex patch from narioninc works so well in my case. It is a TTN (LoRa) gateway, where SPI is needed to communicate with the actual radio module (RAK831). Specifically, the LoRa software contains an utility called
util_spi_stress
which does high-speed R/W test. I can run it for hours with no errors.Is there information about what circumstances exactly cause data corruption? Maybe the access patterns used by LoRa software just by accident don't trigger the problem?
-
@luz I have only seen data corruption in full duplex mode, half duplex works. It would surprise me if half duplex mode has a bug, since the SPI flash works reliable. In full duplex, I have observed errors in the second bit (always 1 or 0, don't remember exactly), depending on the state of the first bit. This makes the first transmitted byte unreliable.
-
Odd that the Onion guys weren't able to get half duplex mode working.
What is the best way to get a kernel image with the SPI fix? If you could point me to the information on how you created your kernel image I would greatly appreciate it.
I'm new to the Linux world, I apologize for the basic question.