G120HDR LedMatrix SoftwareI2C exception

Hello and Happy new year

I use G120HDR, 10 LedMatrix, WifiRs21 module.
I make every 3mn a request to my server and I display the server response on the LedMatrix as a scrolling text.
Everything works very well but an error on the I2C bus happens periodically after a few days (1 to 7 days).

I have seen the schematics of the G120HDR and the Ledmatrix, I do not see pull-up resistors on the boards on the I2C signals SDA and SCL. Is it normal ? Perhaps it is the origin of this error :

================
Connected : 192.168.1.100
Send request
Server response : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Loop end - Sleep 3mn

GC: 10msec 603180 bytes used, 6736488 bytes available
Type 0F (STRING ): 1692 bytes
Type 11 (CLASS ): 16692 bytes
Type 12 (VALUETYPE ): 3792 bytes
Type 13 (SZARRAY ): 8556 bytes
Type 03 (U1 ): 3768 bytes
Type 04 (CHAR ): 588 bytes
Type 07 (I4 ): 468 bytes
Type 0F (STRING ): 60 bytes
Type 11 (CLASS ): 3588 bytes
Type 12 (VALUETYPE ): 84 bytes
Type 15 (FREEBLOCK ): 6736488 bytes
Type 16 (CACHEDBLOCK ): 96 bytes
Type 17 (ASSEMBLY ): 36636 bytes
Type 18 (WEAKCLASS ): 96 bytes
Type 19 (REFLECTION ): 168 bytes
Type 1B (DELEGATE_HEAD ): 1044 bytes
Type 1C (DELEGATELIST_HEAD ): 48 bytes
Type 1D (OBJECT_TO_EVENT ): 360 bytes
Type 1E (BINARY_BLOB_HEAD ): 522996 bytes
Type 1F (THREAD ): 3072 bytes
Type 20 (SUBTHREAD ): 336 bytes
Type 21 (STACK_FRAME ): 2448 bytes
Type 22 (TIMER_HEAD ): 144 bytes
Type 26 (WAIT_FOR_OBJECT_HEAD): 144 bytes
Type 27 (FINALIZER_HEAD ): 168 bytes
Type 31 (IO_PORT ): 180 bytes
Type 34 (APPDOMAIN_HEAD ): 72 bytes
Type 36 (APPDOMAIN_ASSEMBLY ): 4440 bytes
GC: performing heap compaction…
– Display received message
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 9 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####
Une exception de première chance de type ‘System.ApplicationException’ s’est produite dans Gadgeteer.DaisyLink.dll
Exception performing Timer operation
#### Exception System.ApplicationException - 0x00000000 (1) ####
#### Message: SoftwareI2C: Exception writing to device at address 7 on socket 1 - perhaps device is not responding or not plugged in.
#### Gadgeteer.Interfaces.SoftwareI2C::WriteRead [IP: 0123] ####
#### Gadgeteer.Interfaces.SoftwareI2C::Write [IP: 0017] ####
#### Gadgeteer.Modules.DaisyLinkModule::WriteParams [IP: 000d] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::WriteRegister [IP: 0015] ####
#### Gadgeteer.Modules.GHIElectronics.LEDMatrix::DrawBitmap [IP: 000d] ####
#### KapitenG120.LedMatrixDisplay::Draw [IP: 00a0] ####
#### Gadgeteer.Timer::dt_Tick [IP: 0018] ####
#### Microsoft.SPOT.DispatcherTimer::FireTick [IP: 0010] ####
#### Microsoft.SPOT.Dispatcher::PushFrameImpl [IP: 0054] ####
#### Microsoft.SPOT.Dispatcher::PushFrame [IP: 001a] ####
#### Microsoft.SPOT.Dispatcher::Run [IP: 0006] ####
#### Gadgeteer.Program::Run [IP: 0020] ####

The program loop on the last exception .

I will try to add 4,7k pull-up resistors to 3.3v on SCL (pin P1.27) and SDA (pin P1.26)

@ ChristianJack - I believe the DaisyLink modules use an internal pullup. Do you have a board other than the G120HDR you can try it on? Can you post a small example with only the LED Matrix that reproduces the issue?

@ John - I remade the test with pull-up 4.7K resistors on SDA and SCL on G120HDR. I have the same problem after 8 days.
Same errors messages, loop on the last error message during more hours and it ends with " OutOfMemoryException ".

I have no memory leak in my code, the OutOfMemoryException is produced by the loop on the “SoftwareI2C: Exception writing to device at address 7” .

I have no other module except the G120HDR to test.
I do not have a simple example to give you, I plan to published my scrolling text code on CodeShare but I expected to have a package that worked fine.

One question:
Is the message “Exception writing to device at address 9” and “Exception writing to device at address 7” indicate a particular LedMatrix on the daisylink chaining matrices ?
If so, may be that there is a " defective " matrix ?

@ ChristianJack - I believe they do indicate a specific position on the chain, yes. You can always try to rearrange the modules to see if the number changes.