[Solved] NanoPi Neo twi_start()434 - [i2c0] START

Dietpi version is the current one, V139 | NanoPi Neo (armv7l)

After rebooting and looking at dmesg there is a continuous stream of twi_start()434 - [i2c0] START can’t sendout! messages. I haven’t enabled i2c in the config file or anything like that.


[ 10.409684] systemd[1]: Starting udev Coldplug all Devices…
[ 10.491293] systemd[1]: Starting LSB: Set keymap…
[ 10.581178] systemd[1]: Starting Journal Service…
[ 10.702098] systemd[1]: Started Journal Service.
[ 12.492045] systemd-udevd[198]: starting version 215
[ 12.927921] twi_start()434 - [i2c0] START can’t sendout! ************* some here and more below **********************
[ 12.928219] twi_start()434 - [i2c0] START can’t sendout!
[ 12.928512] twi_start()434 - [i2c0] START can’t sendout!
[ 12.928664] bmp085: probe of 0-0077 failed with error -121
[ 12.943578] twi_start()434 - [i2c0] START can’t sendout!
[ 12.943885] twi_start()434 - [i2c0] START can’t sendout!
[ 12.944183] twi_start()434 - [i2c0] START can’t sendout!
[ 12.944541] twi_start()434 - [i2c0] START can’t sendout!
[ 12.944837] twi_start()434 - [i2c0] START can’t sendout!
[ 12.945166] twi_start()434 - [i2c0] START can’t sendout!
[ 13.093734] rtl8192cu: Chip version 0x10
[ 13.117752] rtlwifi: rx_max_size 15360, rx_urb_num 8, in_ep 1
[ 13.118098] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw.bin
[ 13.118966] usbcore: registered new interface driver rtl8192cu
[ 13.123750] ieee80211 phy0: Selected rate control algorithm ‘rtl_rc’
[ 13.126994] rtlwifi: wireless switch is on
[ 13.481081] systemd-udevd[200]: renamed network interface wlan0 to wlan4
[ 13.673902] EXT4-fs (mmcblk0p2): re-mounted. Opts: discard
[ 15.878852] systemd-journald[172]: Received request to flush runtime journal from PID 1
[ 16.221106] gmac0: probed
[ 16.221533] gmac0 gmac0: eth0: eth0: PHY ID 00441400 at 0 IRQ poll (gmac0-0:00)
[ 20.220767] PHY: gmac0-0:00 - Link is Up - 100/Full
[ 22.271519] Adding 102396k swap on /var/swap. Priority:-1 extents:3 across:233468k SS
[ 22.510642] rtl8192cu: MAC auto ON okay!
[ 22.546450] rtl8192cu: Tx queue select: 0x05
[ 22.929483] ADDRCONF(NETDEV_UP): wlan4: link is not ready
[ 26.810036] eth0: no IPv6 routers present
[ 36.303369] twi_start()434 - [i2c0] START can’t sendout!
[ 36.303665] twi_start()434 - [i2c0] START can’t sendout!
[ 36.303940] twi_start()434 - [i2c0] START can’t sendout!
[ 36.322188] twi_start()434 - [i2c0] START can’t sendout!
[ 36.322586] twi_start()434 - [i2c0] START can’t sendout!
[ 36.322993] twi_start()434 - [i2c0] START can’t sendout!
[ 36.323343] twi_start()434 - [i2c0] START can’t sendout!
[ 36.323622] twi_start()434 - [i2c0] START can’t sendout!
[ 36.324028] twi_start()434 - [i2c0] START can’t sendout!
[ 36.324413] twi_start()434 - [i2c0] START can’t sendout!

… continuous stream …

[ 516.495981] twi_start()434 - [i2c0] START can’t sendout!
[ 516.496306] twi_start()434 - [i2c0] START can’t sendout!
[ 516.496636] twi_start()434 - [i2c0] START can’t sendout!
[ 516.496960] twi_start()434 - [i2c0] START can’t sendout!
[ 516.497284] twi_start()434 - [i2c0] START can’t sendout!
and so on.
Gordon Williams

Hi Gordon,

Thanks for the report, let me see if I can replicate on NEO. Will get back to you.

Gordon,

Yep, get same during boot on Dmesg.

Not sure what the cause is, maybe a bug in Sunxi kernel or something amiss in .fex.

We use ARMbian for the base image, and, it appears they have encountered this also: https://github.com/igorpecovnik/lib/issues/522#issuecomment-256862785

I also am unable to find any services linked to twi_start(). But I think for now, it can safely be ignored. Doesn’t appear to effect the operation of the system, and messages are only produced during boot phase (at least for me).

For me it not just during boot but also after. I’m getting messages every few ms.

[ 9495.320945] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.321307] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.321670] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.322044] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.322399] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.322757] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.323127] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.323476] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.323826] twi_start()434 - [i2c0] START can’t sendout!
[ 9495.346027] twi_start()434 - [i2c0] START can’t sendout!
… and so on …
Gordon

Hi Dan,

Had a look at the link you posted. They don’t seem to identify twi_start()434 - [i2c0] START can’t sendout! as a problem. They don’t seem to have the continuous stream that I am having.

Gordon

Hi Gordon,

Which revision NEO do you have? Should be printed on the PCB.

I think it may have something to do with your WiFi and the wlan4 (increasing index) issue you also reported:

[ 22.546450] rtl8192cu: Tx queue select: 0x05
[ 22.929483] ADDRCONF(NETDEV_UP): wlan4: link is not ready

I have a 8192cu, i’ll run some tests.

Hi Dan,

The version is 1.1 for the NanoPi board.

Gord

dmesg is being flooded with the i2c0 messages

After the NEO boots there are no messages sent to dmesg for about 13 sec. and then the i2c0 errors come at a steady stream and fill it

[ 13.755719] EXT4-fs (mmcblk0p2): re-mounted. Opts: discard
[ 15.685435] systemd-journald[171]: Received request to flush runtime journal from PID 1
[ 16.142052] gmac0: probed
[ 16.142494] gmac0 gmac0: eth0: eth0: PHY ID 00441400 at 0 IRQ poll (gmac0-0:00)
[ 17.347868] Adding 102396k swap on /var/swap. Priority:-1 extents:3 across:233468k SS
[ 20.140241] PHY: gmac0-0:00 - Link is Up - 100/Full
[ 26.400038] eth0: no IPv6 routers present <<<<<<<<<<<<<<< break of about 13 sec before i2c0 start
[ 39.341215] twi_start()434 - [i2c0] START can’t sendout!
[ 39.341497] twi_start()434 - [i2c0] START can’t sendout!
[ 39.341769] twi_start()434 - [i2c0] START can’t sendout!
[ 39.356914] twi_start()434 - [i2c0] START can’t sendout!
[ 39.357206] twi_start()434 - [i2c0] START can’t sendout!
[ 39.357487] twi_start()434 - [i2c0] START can’t sendout!

and so on every ms or so.

I think that this is using up a certain amount of CPU time. On-demand and interactive don’t slow the processor down when at idle. The processor speed stays up around 1 GHz. Only conservative allows the processor to run at 240 MHz at idle. Idle is with a ssh conection and Netdata.

Comparing a rp3 with NanoPi Neo both with at idle with only ssh and netdata running (continious update mode) and both with conservative governor.
NanoPi runs at 240 MHz and is about 20% busy
rpi3 runs at 600 MHz and is about 6% busy.

My assumption is that the CPUs are well matched on a clock speed basis. Therefore the rpi3 which runs at 600 MHz at idle should have a lower load than the NanoPi at 240 Mhz, which it does. But if you scale the rpi results 6% busy * 600/240 = 15 % busy based on clock speed. Nanopi runs 20% busy so is the extra work due to the i2c errors being sent to dmesg log?

Looking at the netdata measurements for CPU usage. The nice CPU time scales like the the clock ratios so that seems reasonable.
The system CPU times are:
NanoPi 12%
rpi3 3%
so instead of being 600/240 =2.5 times different they are 4 times different.

Anyway this is an observation.

I installed the Armbian images and noticed a couple of things.

  1. They didn’t suffer from the same stream of i2c errors. There was a bit in dmesg during boot then it stopped.
  2. The boot speed of Armbian was much faster around 12 sec vs 20 sec for dietpi
  3. The Armbian images are newer by about a month, if I understand that correctly.

As a further note the dietpi image was WAY smaller and WAY easier to set up. :slight_smile: So Thanks.

There are some issues with running both ethernet and wifi dongle with Nanopi. I haven’t been able to get the wifi started. I hoped the same /etc/network/interfaces file that I use on the rpi3 could also be used on the nanopi, but something is not right. Either it does not associate with the AP or the interface is missing.

Gordon

Hi Gordon,

Yep, ARMbian is constantly releasing updates and improvements daily. But these only take effect when the image is built, which we need to do manually each time, then convert to DietPi.
We do revisit existing images and update the ones for the “problem” devices, but overall we are roughly a month behind ARMbian.

I didn’t check if this error occurs on our 4.9 kernel test image. So, if you get a chance, please check this also.

The lastest V140 testing image with 4.9 kernal of Dietpi for Nanopi NEO solved all the i2C errors and the wifi errors too.

Many thanks,
Gordon Williams