Re: Custom device plugin



>> I'll assume these are the Yota LTE (LU150?) USB sticks based on the GCT
>> chipset, vid 1076
> 
> That's right.
> 
> 
>> pid 8003.  If not please elighten me :)
> 
> At least my modem has pid 8002.
> 
> 
>> I'm happy to take a patch for these devices, but first we'd want a bit
>> more information about it.  How do they communicate with the host?  Does
>> the host actually need to configure them at all, or is the configuration
>> all done through the device's web interface?
> 
> They use RNDIS, so the host sees them as network interfaces (the
> driver is rndis_host).
> 
> lsusb:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   bDeviceClass            2 Communications
>   idVendor           0x1076 GCT Semiconductor, Inc.
>   idProduct          0x8002
>   iManufacturer           1 GCT SEMICONDUCTOR Inc
>   iProduct                2 Modem Yota
>       bInterfaceClass       224 Wireless
>       bInterfaceSubClass      1 Radio Frequency
>       bInterfaceProtocol      3 RNDIS
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> dmesg:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> [37908.902059] usb 2-1: new high-speed USB device number 5 using ehci_hcd
> [37909.016784] usb 2-1: New USB device found, idVendor=1076, idProduct=8001
> [37909.016790] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> [37909.016795] usb 2-1: Product: Modem Yota
> [37909.016799] usb 2-1: Manufacturer: GCT SEMICONDUCTOR Inc
> [37909.017941] scsi7 : usb-storage 2-1:1.0
> [37910.020806] scsi 7:0:0:0: CD-ROM            GDM Mass
>        PQ: 0 ANSI: 0 CCS
> [37910.040402] sr1: scsi3-mmc drive: 0x/0x caddy
> [37910.040821] sr 7:0:0:0: Attached scsi CD-ROM sr1
> [37911.023887] usb 2-1: USB disconnect, device number 5
> [37911.780107] usb 2-1: new high-speed USB device number 6 using ehci_hcd
> [37911.894782] usb 2-1: New USB device found, idVendor=1076, idProduct=8002
> [37911.894788] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> [37911.894792] usb 2-1: Product: Modem Yota
> [37911.894796] usb 2-1: Manufacturer: GCT SEMICONDUCTOR Inc
> [37911.895640] rndis_host 2-1:1.0: dev can't take 1558 byte packets
> (max 1458), adjusting MTU to 1400
> [37911.896799] rndis_host 2-1:1.0: eth1: register 'rndis_host' at
> usb-0000:00:1d.7-1, RNDIS device, 00:09:3b:f0:1a:40
> [37911.910891] systemd-udevd[14153]: renamed network interface eth1 to yota
> [37922.034017] yota: no IPv6 routers present
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> The device seems to contain a DHCP-server that always provides the
> same settings: 10.0.0.10/24 gw/dns 10.0.0.1.
> The server is rather buggy so I've sticked to static IP configuration in NM.
> 
> You can't really configure it — it just works. Through the web
> interface you can check connection status,
> update firmware (they say, you won't need this, because it will be
> updated automatically), and
> switch the device on/off (the relevant code is commented out in HTML
> for some reason, though it does work).
> 
> Web GUI gets status from http://10.0.0.1/status. I bet, their software
> for Windows and Mac
> gets data the same way.The data looks like this:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> InterfaceType=lte
> 3GPP.IMSI=<not really interesting>
> 3GPP.UICC-ID=<not really interesting>
> 3GPP.IMEI=<not really interesting>
> 3GPP.IMEISV=<not really interesting>
> DeviceName=Modem Yota
> RfVersion=no information
> AsicVersion=GDM7240R1
> FirmwareVersion=3.7
> State=Connected
> UpdateState=NotStarted
> UpdateProgress=0
> ConnectedTime=894
> 3GPP.SINR=4
> 3GPP.RSSI=-86
> 3GPP.MCC=250
> 3GPP.MNC=11
> 3GPP.PLMN=25011
> 3GPP.RoamingStatus=0
> 3GPP.CGI=25011BF2A900
> 3GPP.CI=BF2A900
> 3GPP.eNBID=BF2A9
> 3GPP.HNBN=
> 3GPP.CSGT=
> 3GPP.CenterFreq=2642500
> 3GPP.TxPWR=23.0
> 3GPP.SPN=Yota
> SessionID=3420730
> 3GPP.IsIdle=0
> IP=10.138.173.239
> SubnetMask=255.255.255.0
> DefaultGateway=10.0.0.1
> DHCP=10.0.0.1
> DNS=10.0.0.1
> SentBytes=97808
> ReceivedBytes=253845
> MaxDownlinkThroughput=99232
> MaxUplinkThroughput=88064
> CurDownlinkThroughput=53480
> CurUplinkThroughput=13048
> TotalHandoversCount=0
> SucceededHandoversCount=0
> NewFirmwareVersion=
> 3GPP.RSRP=-116
> 3GPP.RSRQ=-11.0
> MSISDN=
> SupportsConnectDisabling=0
> CQI=8
> DownlinkMCSMain=3,9,6
> DownlinkMCSDiv=3,6,4
> UplinkMCS=3,4,2
> NBRi=earfcn,ci,rsrp
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 

ModemManager as in git master is really port-type agnostic; which means
that a plugin may use whatever method it needs to run specific steps in
each of the state machines available.

For this specific usecase, I don't think it would be too hard to develop
a plugin using libsoup to run the periodic HTTP-GET requests to the
built-in webserver in order to get these values.

Additional changes in the core may still be needed, though, as currently
we always require to have a 'primary' port available, either AT or QMI.
In this case we could extend the list with an 'HTTP-based' primary port :-)

-- 
Aleksander


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]