SIM800C 장치를 사용하여 Ofono 구성

SIM800C 장치를 사용하여 Ofono 구성

(완전 초보자로서) 사용하려고 합니다.ofonoSIMCOM 800C 장치를 작동합니다. 소스에서 컴파일하고 필요한 모든 서비스(D-bus 및 udev)를 구성했습니다. 문서의 udev 규칙이 작동하지 않습니다. 장치를 감지하고 OFONO_DRIVER속성을 sim900. 테스트 스크립트를 사용하여 수행하는 모든 테스트 ofono에서는 오류가 발생합니다. 올바르게 설정하는 방법에 대한 가이드가 있나요? 예를 들어 online-modem스크립트는 다음 오류를 반환합니다.

Setting modem /sim900_0 online...
Traceback (most recent call last):
  File "/home/.../ofono/test/./online-modem", line 17, in <module>
    modem.SetProperty("Online", dbus.Boolean(1), timeout = 120)
  File "/usr/lib/python3.11/site-packages/dbus/proxies.py", line 72, in __call__
    return self._proxy_method(*args, **keywords)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dbus/proxies.py", line 141, in __call__
    return self._connection.call_blocking(self._named_service,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dbus/connection.py", line 652, in call_blocking
    reply_message = self.send_message_with_reply_and_block(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dbus.exceptions.DBusException: org.ofono.Error.NotAvailable: Operation currently not available

다음은 스크립트의 출력입니다 list-modems.


[ /sim900_0 ]
    Online = 0
    Powered = 0
    Lockdown = 0
    Emergency = 0
    SystemPath = /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2
    Interfaces = 
    Features = 
    Type = hardware

[ /stktest ]
    Online = 0
    Powered = 0
    Lockdown = 0
    Emergency = 0
    Interfaces = 
    Features = 
    Type = test

기본 D 버스 구성을 변경하지 않았습니다. 내가 사용하는 것은 다음과 같습니다 udev.

DRIVERS=="ch341", ENV{OFONO_DRIVER}="sim900"

로그에는 sudo ofonod -nd내 장치가 감지되었다고 표시됩니다.

ofonod[3141]: oFono version 2.1
ofonod[3141]: src/plugin.c:__ofono_plugin_init() 
ofonod[3141]: src/gprs-provision.c:ofono_gprs_provision_driver_register() driver: 0x558ba57afe20 name: GPRS context provisioning
ofonod[3141]: plugins/push-notification.c:push_notification_init() 
ofonod[3141]: plugins/smart-messaging.c:smart_messaging_init() 
ofonod[3141]: plugins/emulator_fuzz.c:emulator_fuzz_init() 
ofonod[3141]: src/modem.c:ofono_modem_driver_register() driver: 0x558ba57b0080, name: stktest
ofonod[3141]: src/modem.c:ofono_modem_create() name: stktest, type: stktest
ofonod[3141]: src/modem.c:ofono_modem_register() 0x558ba6c64c20
ofonod[3141]: plugins/stktest.c:stktest_probe() 0x558ba6c64c20
ofonod[3141]: src/modem.c:emit_modem_added() 0x558ba6c64c20
ofonod[3141]: src/modem.c:get_modem_property() modem 0x558ba6c64c20 property SystemPath
ofonod[3141]: src/modem.c:call_modemwatches() 0x558ba6c64c20 added:1
ofonod[3141]: plugins/udevng.c:udev_start() 
ofonod[3141]: plugins/udevng.c:enumerate_devices() 
ofonod[3141]: plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3141]: plugins/udevng.c:check_usb_device() ch341 [1a86:7523]
ofonod[3141]: plugins/udevng.c:add_device() /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2
ofonod[3141]: plugins/udevng.c:add_device() /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
...
ofonod[3141]: plugins/udevng.c:create_modem() /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2
ofonod[3141]: plugins/udevng.c:create_modem() driver=sim900
ofonod[3141]: src/modem.c:ofono_modem_create() name: (null), type: sim900
ofonod[3141]: src/modem.c:set_modem_property() modem 0x558ba6c942b0 property Device
ofonod[3141]: src/modem.c:set_modem_property() modem 0x558ba6c942b0 property SystemPath
ofonod[3141]: src/modem.c:ofono_modem_register() 0x558ba6c942b0
ofonod[3141]: plugins/sim900.c:sim900_probe() 0x558ba6c942b0
ofonod[3141]: src/modem.c:emit_modem_added() 0x558ba6c942b0
ofonod[3141]: src/modem.c:get_modem_property() modem 0x558ba6c942b0 property SystemPath
ofonod[3141]: src/modem.c:call_modemwatches() 0x558ba6c942b0 added:1
ofonod[3141]: plugins/dun_gw_bluez5.c:modem_watch() modem: 0x558ba6c942b0, added: 1
ofonod[3141]: plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x558ba6c942b0, added: 1
ofonod[3141]: examples/emulator.c:modem_watch() modem: 0x558ba6c942b0, added: 1
ofonod[3141]: plugins/smart-messaging.c:modem_watch() modem: 0x558ba6c942b0, added: 1
ofonod[3141]: plugins/push-notification.c:modem_watch() modem: 0x558ba6c942b0, added: 1
...
ofonod[3141]: src/modem.c:get_modem_property() modem 0x558ba6c64c20 property SystemPath
ofonod[3141]: src/modem.c:get_modem_property() modem 0x558ba6c942b0 property SystemPath
ofonod[3141]: src/modem.c:get_modem_property() modem 0x558ba6c64c20 property SystemPath
...
ofonod[3141]: plugins/upower.c:modemwatch() modem: /sim900_0, added: 1
ofonod[3141]: plugins/upower.c:modemwatch() modem: /stktest, added: 1
...

스크립트의 내용은 다음과 같습니다 online-modem.

#!/usr/bin/python3

import dbus, sys

bus = dbus.SystemBus()

if len(sys.argv) == 2:
    path = sys.argv[1]
else:
    manager = dbus.Interface(bus.get_object('org.ofono', '/'),
            'org.ofono.Manager')
    modems = manager.GetModems()
    path = modems[0][0]

print("Setting modem %s online..." % path)
modem = dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.Modem')
modem.SetProperty("Online", dbus.Boolean(1), timeout = 120)

내 장치에서 ofono를 올바르게 구성하고 D-bus API를 사용하려면 어떻게 해야 합니까?

관련 정보