Ar-300m i2c

Hello to all Im new here.

Documentation says that some early device of AR300m wont work with I2C .
" Note: I2C is not working in some early version of the router."

Ive already tested the default I2C pin which is GPIO 17 and 16 .But i cant detect any address with
i2cdetect command.

Can someone till me if my hardware version works with I2C ?
Im using AR300m with hardware version GL-AR300m-V1.5.2 .

Regards ,
Dave

Hi
In version 1.4, no pull-up resistor is added to GPIO17, so IIC will not be able to recognize it.V1.5.2 is OK.

I already tried but i still got no address response when running i2cdetect command.

Same board version, same findings, haven’t poked it with a scope yet but I’ve tried a couple of i2c devices I know are working both with and without onboard pullups (It’s a thing, I swear)

Set up i2c-gpio-custom on pins 17/16 in stock firmware using the command: insmod i2c-gpio-custom bus0=0,17,16

Dmesg says all good:

[ 2506.502225] i2c-gpio i2c-gpio.1: using pins 17 (SDA) and 16 (SCL)

And am probing the bus with force-installed i2c-tools:

root@GL-AR300M:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Notably I had to unexport GPIO16 (echo 16 > /sys/class/gpio/unexport) before I could successfully set up a bitbanged i2c bus on these pins at all.

Pulling the SDA pin low yields the following (basically fake ACK on all scanned addresses), suggesting it’s connected appropriately:

root@GL-AR300M:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77

Swapping SDA/SCL and doing the same trick gives the same results, so I know both pins are doing something, unfortunately that something does not appear to be a functional i2c bus.

Using i2cdetect -q 0 doesn’t fare any better (I know most of my sensors are safe with this.)

Tried a bunch of the extra parameters as defined in openwrt/i2c-gpio-custom.c at openwrt-19.07 · openwrt/openwrt · GitHub - normally “udelay” is how you hit a specific baudrate if your sensors are weird and slow but no dice here.

Maybe I should grab my scope :grimacing:

Edit: With a scope attached I can see either DAT or CLK on GPIO16 depending on how I configure the bitbanged i2c, but I cannot drive GPIO17 low either with i2c traffic or by exporting via /sys/class/gpio and setting a value manually.

Thank you so much for you response gadgetoid. Please update me if you found a solution.

No luck. Even pulling up a bitbanged i2c bus on GPIOs 9/10 (the serial connection) and using a module with integrated pull-ups I can’t get it to work. I figure either there’s something seriously awry or I’m making assumptions based on my previous experiences with i2c-gpio on the Raspberry Pi that don’t apply here. Either way I don’t have time to poke further at the moment.

Something the size of the AR-300M with OpenWRT and solid out-of-the-box i2c support would be a nice IoT sensor host but I have failed at the first hurdle.

I also tried deferent pull-up resistor values and level shifter but still cant detect i2c address. Anyway thank you so much for you response gadgetoid.

Hi Dave-iot:
I need to find some sensors to test, the test is not so fast, have you tried other versions of the firmware? If you have time, you can test V2.264 and 3.104, because this feature is not used often, so some of the newer versions of the firmware are not tested.

Hello Hoff…
I dont remember the firmware version I tried . But I tested it with deferent version of the openwrt and gl-inet firmware. I also tried to compile my own firmware with custom kernel to support gpio/i2c but still no I2c address…

Thank you for your response

Regards,
Dave