Teltonika RUT955 - modem not detected

I noticed a day ago, that the master is now supporting the RUT900 series.

Today, using the latest master barnch, I upgraded one of our RUT955. The upgrade went well, everything is accessible, but the modem is not detected at all.

"lsusb" is not showing the modem device at all
"cat /sys/kernel/debug/usb/devices" is not showing the device at all

I upgraded to lede master from the recommended official version (the bootloader was 3.0.1, as the commit recommended).

Is there anything I need to try?

My RUT955 has a Huawei ME909-521 modem inside.

Thanks!

Hi dchard,

The GSM Modem is disabled after bootup, you have to set some GPIO Pins to the output mode and set them correct:

Pin Name Meaning
39 SIM 0 = SIM2 , 1 = SIM1
44 MON 0 = Modem powered off, 1 Modem Powered on
45 MRST 0 = MOdem operational, 1 = Modem reset line aktivated

to get it working I used SIM=1 , MON=1, MRST=0

Packages you will need luci-proto-ncm and the usb Modem related kernel stuff.

I used the following uci wan Config

network.wan=interface
network.wan.proto='ncm'
network.wan.device='/dev/ttyUSB1'
network.wan.apn='m2m.vodafone.de'
network.wan.username='m2m'
network.wan.password='m2m'
network.wan.ipv6='auto'
network.wan.auth='1'

Take a look into my ./script/env repo at https://gitlab.com/lairsdragon/openwrt-firmware-env/tree/mx880 in the mx880 branch

HTH

cheerio
Steve

Thanks for the help!

I tried with NCM, but it is definitely the GPIO problem, as the modem is not even shown under lsusb.

Will try this on Monday, but it would be nice, if this problem can be fixed at least by setting the correct GPIO pins for SIM1 and modem powered on by default on the master version.

I am not expecting the SIM switching to work, but at least it should power on by default :slight_smile:

I will make it.

@lairsdragon, will you send patch/PR for RUT955/RUT905?

Hi @pepe2k

I am not sure if the stuff i've made is useful for a patch against OpenWRT. I included some stuff from the Teltonika GPL sources and fixed the GPIO pin Numbers (OpenWRT uses a starting index 32, where the Teltonika Firmware uses a index of 48) and I think this stuff is not done in a way it fits into OpenWRT.

Yesterday I saw /etc/init.d/gpio_switch in the firmware and tried this instead of the ugly scripts

uci batch << END
set system.modem_power=gpio_switch
set system.modem_power.name='Modem Power'
set system.modem_power.gpio_pin='44'
set system.modem_power.value='1'

set system.modem_reset=gpio_switch
set system.modem_reset.name='Modem reset'
set system.modem_reset.gpio_pin='45'
set system.modem_reset.value='0'

set system.simcard=gpio_switch
set system.simcard.name='SIM Card'
set system.simcard.gpio_pin='33'
set system.simcard.value='1'
commit
END

That way the modem gets woken up after reboot and it fits into OpenWRT. As far as I have seen this is setup in /etc/board.d/03_gpio_switches

If this fits I can build a patch. What to you think @pepe2k?

cheerio
Steve

Index doesn't really matter.

I will take care of that 3 GPIO lines missing for SIM/modem. They are common for whole RUT9xx series.

I would like someone to extend support and include all missing things for RUT955/RUT905 in mach-rut9xx.c. I don't have access to RUT9x5, so I'm not able to test and verify additional I/O/RS232/RS485/GPS/etc. RUT900 just doesn't have them.

We have access to RUT955, I am happy to test it in when we have those items supported.

GPS is modem dependent, no additional GPS chip inside. In terms of the RS232, I just needed to install the proper driver with opkg, and the device was recognised, maybe it needs some modifications to attach a shell to it.

Maybe the easiest way to handle all this would be to create a teltonika luci app, where it is possible to set and get the GPIO pins, so the relay, monitor, SIM switch etc. can be controlled.

Please use /etc/board.d/03_gpio_switches for this...

I have access to RUT955 based Routers with Huawei and Quectel modules, I will test the firmware on both variants including the peripherals.

My Status ATM:

Peripheral Status
Digital output tested, working
Digital input tested, working
RS232 tested, working
Dual SIM tested, working
USB tested, not working, port is not powered
GPS Not testet, need Antenna,depends on GSM Module
Analog input kernel support for I2C Device mcp3221 missing
RS485 kernel support for AR934x UART missing
MicroSD kernel support for mmc-spi missing

cheerio
Steve

Is there a working firmware (Openwrt not the original RUT955)?

managed to build one from source but still can't make the modem start.

OK managed to solve it by adding the MX880 libraries to compilation.

and idea how to make the internal SD card work? my guess it's related to GPIO.

any help (what so ever) will be much appreciated.

we do have the same issue with the Teltonika RUT5xx after upgrading from lede-17.01 to OpenWrt 18.06 (or master).
the modem doesn't show up anymore in "lsusb".
there are 24 GPIOs but none of them seems to trigger the modem boot

you'll need to copy the files https://gitlab.com/lairsdragon/openwrt-firmware-env/tree/mx880 (with the directory structure) to your ~/openwrt/files/ dir (create the "files" dir in the root of openwrt directory).

then the compile process will automatically copy the files to their destination in root of the firmware.
i've also managed to build ModemManager using https://bitbucket.org/aleksander0m/modemmanager-openwrt

now it connects automatically and every thing works - just the SD is missing :slight_smile:

different target, different device, different number of available GPIO pins - i don't think that's the solution for me/us :wink:

sorry :slight_smile: tried to help..

what are the odds for success if i'll copy the /package/kernel/mmc_over_gpio (from the rut955 source code) dir to the ~/openwrt/package/kernel/ dir, then run ./scripts/feeds update && ./scripts/feeds install -a, select the package in "make menuconfig" and run make -j $(nproc).

will it work?

@Akavish Thanks for all your work/info! I've got a RUT950 I'm working with...the goal is 18.06.1 and my stuggle is the modem as well. I'm trying the steps from your previous post and will let you know how it goes.

Thanks,
Kevin

Progress finally! ...I've been stuck for several days.

I got the MX880 driver as you descibed and now my cdc-wdm0 device finally shows up! I also tried to build the modemmanager package, but it's failing with the following...

make[6]: Nothing to be done for 'all-am'.
make[6]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libwmc'
make[5]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libwmc'
Making all in libmm-glib
make[5]: Entering directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libmm-glib'
Making all in generated
make[6]: Entering directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libmm-glib/generated'
  GEN      mm-enums-types.h
  GEN      mm-errors-types.h
  GEN      mm-gdbus-manager.c
Traceback (most recent call last):
  File "/home/test/openwrt/staging_dir/target-mips_24kc_musl/usr/bin/gdbus-codegen", line 53, in <module>
    from codegen import codegen_main
ImportError: No module named codegen
Makefile:1109: recipe for target 'mm-gdbus-manager.c' failed
make[6]: *** [mm-gdbus-manager.c] Error 1
make[6]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libmm-glib/generated'
Makefile:1163: recipe for target 'all-recursive' failed
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/libmm-glib'
Makefile:505: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0'
Makefile:437: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0'
Makefile:141: recipe for target '/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/.built' failed
make[2]: *** [/home/test/openwrt/build_dir/target-mips_24kc_musl/modemmanager-1.8.0/.built] Error 2
make[2]: Leaving directory '/home/test/openwrt/feeds/modemmanager/modemmanager'
time: package/feeds/modemmanager/modemmanager/compile#11.51#1.88#13.47
package/Makefile:107: recipe for target 'package/feeds/modemmanager/modemmanager/compile' failed
make[1]: *** [package/feeds/modemmanager/modemmanager/compile] Error 2
make[1]: Leaving directory '/home/test/openwrt'
/home/test/openwrt/include/toplevel.mk:216: recipe for target 'package/modemmanager/compile' failed
make: *** [package/modemmanager/compile] Error 2

One more note... While the cell network connected I still could communicate through it. I had to

ifconfig wwan0 down
echo Y > /sys/class/net/wwan0/qmi/raw_ip
ifconfig wwan0 up

...now I can ping out to the the internet!

Could you please tell what the command responds to
:/# uqmi -d /dev/cdc-wdm0 --wda-get-data-format

@iuncuim

root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --wda-get-data-format
"raw-ip"