Skip to contentSkip to conversation

phy: mapphone-mdm6600: Add USB PHY driver for MDM6600 on Droid 4

PATCH In review Tony Lindgren 4 participants 22 messages Mar 9, 2018 – Mar 29, 2018

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH v4 1/1 phy: mapphone-mdm6600: Add USB PHY driver for MDM6600 on Droid 4

Let's add support for the GPIO controlled USB PHY on the MDM6600 modem. It is used on some Motorola Mapphone series of phones and tablets such as Droid 4.

The MDM6600 is hardwired to the first OHCI port in the Droid 4 case, and is controlled by several GPIOs. The USB PHY is integrated into the MDM6600 device it seems. We know this as we get L3 errors from omap-usb-host if trying to use the PHY before MDM6600 is configured.

The GPIOs controlling MDM6600 are used to power device on and off, to configure the USB start-up mode (normal mode versus USB flashing), and they also tell the state of the MDM6600 device.

The two start-up mode GPIOs are dual-purposed and used for out of band (OOB) wake-up for USB and TS 27.010 serial mux. But we need to configure the USB start-up mode first to get MDM6600 booted in the right mode to be usable in the first place.

Note that the Motorola Mapphone Linux kernel tree has a "radio-ctrl" driver for modems. But it really does not control the radio at all, it just controls the modem power and start-up mode for USB. So I came to the conclusion that we're better off having this done in the USB PHY driver. For adding support for USB flashing mode, we can later on add a kernel module option for flash_mode=1 or something similar.

Also note that currently there is no PM runtime support for the OHCI on omap variant SoCs. So for low(er) power idle states, currenty both ohci-platform and phy-mapphone-mdm6600 must be unloaded or unbound.

For reference here is what I measured for total power consumption on an idle Droid 4 with and without USB related MDM6600 modules:

idle lcd off phy-mapphone-mdm6600 ohci-platform
153mW 284mW 344mW

So it seems that MDM6600 is currently not yet idling even with it's radio turned off, but that's something that is beyond the control of this USB PHY driver. This patch does get us to the point where modem data and GPS are usable with libqmi and ModemManager for example. Voice calls need more audio driver work.

---

Changes since v3:
- Dropped unneeded usb_phy related parts as suggested by Kishon

Changes since v2:
- Dropped OTG as suggested by Kishon
- Added Rob's Reviewed-by

Changes since v1:
- Fixed up issues noticed by Rob and Sebastian
- Implemented wake irq handler (for debug use only for now)
- Improved error handling based on more testing

---
 .../bindings/phy/phy-mapphone-mdm6600.txt          |  30 ++
 drivers/phy/motorola/Kconfig                       |   8 +
 drivers/phy/motorola/Makefile                      |   1 +
 drivers/phy/motorola/phy-mapphone-mdm6600.c        | 542 +++++++++++++++++++++
 4 files changed, 581 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/phy/phy-mapphone-mdm6600.txt
 create mode 100644 drivers/phy/motorola/phy-mapphone-mdm6600.c
Documentation/devicetree/bindings/phy/phy-mapphone-mdm6600.txt new file +30 -0
new file mode 100644
@@ -0,0 +1,30 @@
+Device tree binding documentation for Motorola Mapphone MDM6600 USB PHY
+
+Required properties:
+- compatible		Must be "motorola,mapphone-mdm6600"
+- enable-gpios		GPIO to enable the USB PHY
+- power-gpios		GPIO to power on the device
+- reset-gpios		GPIO to reset the device
+- motorola,mode-gpios	Two GPIOs to configure MDM6600 USB start-up mode for
+			normal mode versus USB flashing mode
+- motorola,cmd-gpios	Three GPIOs to control the power state of the MDM6600
+- motorola,status-gpios	Three GPIOs to read the power state of the MDM6600
+
+Example:
+
+usb-phy {
+	compatible = "motorola,mapphone-mdm6600";
+	enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
+	power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
+	reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
+	motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
+			      <&gpio5 21 GPIO_ACTIVE_HIGH>;
+	motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
+			     <&gpio4 8 GPIO_ACTIVE_HIGH>,
+			     <&gpio5 14 GPIO_ACTIVE_HIGH>;
+	motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
+				<&gpio2 21 GPIO_ACTIVE_HIGH>,
+				<&gpio2 23 GPIO_ACTIVE_HIGH>;
+	#phy-cells = <0>;
+};
+
drivers/phy/motorola/Kconfig +8 -0
@@ -10,3 +10,11 @@ config PHY_CPCAP_USB
 	help
 	  Enable this for USB to work on Motorola phones and tablets
 	  such as Droid 4.
+
+config PHY_MAPPHONE_MDM6600
+	tristate "Motorola Mapphone MDM6600 modem USB PHY driver"
+	depends on OF && USB_SUPPORT
+	select GENERIC_PHY
+	help
+	  Enable this for MDM6600 USB modem to work on Motorola phones
+	  and tablets such as Droid 4.
drivers/phy/motorola/Makefile +1 -0
@@ -3,3 +3,4 @@
 #
 
 obj-$(CONFIG_PHY_CPCAP_USB)		+= phy-cpcap-usb.o
+obj-$(CONFIG_PHY_MAPPHONE_MDM6600)	+= phy-mapphone-mdm6600.o
drivers/phy/motorola/phy-mapphone-mdm6600.c new file +542 -0

542 lines not on this page · raw message

Signature · 1 line
2.16.2
#1 lore raw

Hi!

Quoted 3 lines

Let's add support for the GPIO controlled USB PHY on the MDM6600 modem. It is used on some Motorola Mapphone series of phones and tablets such as Droid 4.

...

Quoted 5 lines

So it seems that MDM6600 is currently not yet idling even with it's radio turned off, but that's something that is beyond the control of this USB PHY driver. This patch does get us to the point where modem data and GPS are usable with libqmi and ModemManager for example. Voice calls need more audio driver work.

Thanks for the good work. Looks like I'll need to get droid 4... fortunately it is not available in czech republic so I don't get excuse to get another toy.

Oh.. no. It is available in Czech republic. Is Motorola Droid 4 XT894 the right one? Hmm, and LTE modem is useless in Europe, while the GSM one does not work, right?

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#2 lore raw
Quoted 12 lines · Pavel Machek

Hi!

Quoted 3 lines

Let's add support for the GPIO controlled USB PHY on the MDM6600 modem. It is used on some Motorola Mapphone series of phones and tablets such as Droid 4.

...

Quoted 5 lines

So it seems that MDM6600 is currently not yet idling even with it's radio turned off, but that's something that is beyond the control of this USB PHY driver. This patch does get us to the point where modem data and GPS are usable with libqmi and ModemManager for example. Voice calls need more audio driver work.

Quoted 7 lines

Thanks for the good work. Looks like I'll need to get droid 4... fortunately it is not available in czech republic so I don't get excuse to get another toy.

Oh.. no. It is available in Czech republic. Is Motorola Droid 4 XT894 the right one? Hmm, and LTE modem is useless in Europe, while the GSM one does not work, right?

Yup xt894 is the model number for droid 4.

Regards,

Tony

#3 lore raw
In reply to Tony Lindgren

Hi!

Quoted 8 lines

idle lcd off phy-mapphone-mdm6600 ohci-platform
153mW 284mW 344mW

So it seems that MDM6600 is currently not yet idling even with it's radio turned off, but that's something that is beyond the control of this USB PHY driver. This patch does get us to the point where modem data and GPS are usable with libqmi and ModemManager for example. Voice calls need more audio driver work.

Ok, let me try. I believe I should see the modem device on lsusb, but I don't.

user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep MAPPH CONFIG_PHY_MAPPHONE_MDM6600=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep OHCI_ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_OMAP3=y CONFIG_USB_OHCI_HCD_PLATFORM=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$

As far as I can tell,

+CONFIG_USB_WDM=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_QUALCOMM=y
+CONFIG_USB_SERIAL_WWAN=y

should be enabled to enable the drivers (and I did that), but without device showing on the bus...

Any ideas?

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#4 lore raw
Quoted 36 lines · Pavel Machek

Hi!

Quoted 8 lines

idle lcd off phy-mapphone-mdm6600 ohci-platform
153mW 284mW 344mW

So it seems that MDM6600 is currently not yet idling even with it's radio turned off, but that's something that is beyond the control of this USB PHY driver. This patch does get us to the point where modem data and GPS are usable with libqmi and ModemManager for example. Voice calls need more audio driver work.

Ok, let me try. I believe I should see the modem device on lsusb, but I don't.

user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep MAPPH CONFIG_PHY_MAPPHONE_MDM6600=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep OHCI_ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_OMAP3=y CONFIG_USB_OHCI_HCD_PLATFORM=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$

As far as I can tell,

(quoted diff) +4 -0
+CONFIG_USB_WDM=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_QUALCOMM=y
+CONFIG_USB_SERIAL_WWAN=y
Quoted 4 lines

should be enabled to enable the drivers (and I did that), but without device showing on the bus...

Any ideas?

Do you have the related dts patches picked from next?

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

Regards,

Tony

#5 lore raw

Hi!

Quoted 29 lines
Quoted 22 lines

user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep MAPPH CONFIG_PHY_MAPPHONE_MDM6600=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$ zcat /proc/config.gz | grep OHCI_ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_OMAP3=y CONFIG_USB_OHCI_HCD_PLATFORM=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost$

As far as I can tell,

(quoted diff) +4 -0
+CONFIG_USB_WDM=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_QUALCOMM=y
+CONFIG_USB_SERIAL_WWAN=y
Quoted 4 lines

should be enabled to enable the drivers (and I did that), but without device showing on the bus...

Any ideas?

Do you have the related dts patches picked from next?

Quoted 6 lines

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

ifconfig? I thought I should get /dev/ttyUSB0..3?

Anyway, that does not seem to work. Something is detected now:

[   10.819549] ALSA device list:
[   10.831787]   #0: HDMI 58006000.encoder
[   10.841186] Waiting 10 sec before mounting root device...
[   10.887573] usb 2-1: New USB device found, idVendor=22b8,
idProduct=2a70
[   10.897521] usb 2-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=0
[   10.907684] usb 2-1: Product: Flash MZ600
[   10.914611] usb 2-1: Manufacturer: Motorola, Incorporated
[   20.967193] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to

feature incompatibilities

But qcserial driver does not bind to that. If I attempt to force it:

root@devuan:/sys/bus/usb-serial/drivers/qcserial# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 22b8:2a70 Motorola PCS
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@devuan:/sys/bus/usb-serial/drivers/qcserial# echo "22b8 2a70" >
new_id
[ 2059.267730] usb 2-1: unknown number of interfaces: 9
[ 2059.272949] usb 2-1: unknown number of interfaces: 9
[ 2059.278045] usb 2-1: unknown number of interfaces: 9
[ 2059.283233] usb 2-1: unknown number of interfaces: 9
[ 2059.288330] usb 2-1: unknown number of interfaces: 9
[ 2059.293457] usb 2-1: unknown number of interfaces: 9
[ 2059.298553] usb 2-1: unknown number of interfaces: 9
[ 2059.303680] usb 2-1: unknown number of interfaces: 9
[ 2059.308776] usb 2-1: unknown number of interfaces: 9

I don't get anything useful. Do I need to boot android before booting Linux or something? How does your lsusb look like?

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#6 lore raw
Quoted 36 lines · Pavel Machek

Hi!

Quoted 34 lines
Quoted 26 lines

user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost $
sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost $
zcat /proc/config.gz | grep MAPPH CONFIG_PHY_MAPPHONE_MDM6600=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost $
zcat /proc/config.gz | grep OHCI_ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_OMAP3=y CONFIG_USB_OHCI_HCD_PLATFORM=y user@devuan:/sys/devices/platform/44000000.ocp/4a064000.usbhshost $

As far as I can tell,

(quoted diff) +4 -0
+CONFIG_USB_WDM=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_QUALCOMM=y
+CONFIG_USB_SERIAL_WWAN=y
Quoted 5 lines

should be enabled to enable the drivers (and I did that), but without
device showing on the bus...

Any ideas?

Do you have the related dts patches picked from next?

Quoted 8 lines
Quoted 6 lines

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

ifconfig? I thought I should get /dev/ttyUSB0..3?

I believe they are QMI via qmi_wwan, not TTYs.

Dan

Quoted 37 lines

Anyway, that does not seem to work. Something is detected now:

[   10.819549] ALSA device list:
[   10.831787]   #0: HDMI 58006000.encoder
[   10.841186] Waiting 10 sec before mounting root device...
[   10.887573] usb 2-1: New USB device found, idVendor=22b8,
idProduct=2a70
[   10.897521] usb 2-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=0
[   10.907684] usb 2-1: Product: Flash MZ600
[   10.914611] usb 2-1: Manufacturer: Motorola, Incorporated
[   20.967193] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to

feature incompatibilities

But qcserial driver does not bind to that. If I attempt to force it:

root@devuan:/sys/bus/usb-serial/drivers/qcserial# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 22b8:2a70 Motorola PCS
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@devuan:/sys/bus/usb-serial/drivers/qcserial# echo "22b8 2a70" >
new_id
[ 2059.267730] usb 2-1: unknown number of interfaces: 9
[ 2059.272949] usb 2-1: unknown number of interfaces: 9
[ 2059.278045] usb 2-1: unknown number of interfaces: 9
[ 2059.283233] usb 2-1: unknown number of interfaces: 9
[ 2059.288330] usb 2-1: unknown number of interfaces: 9
[ 2059.293457] usb 2-1: unknown number of interfaces: 9
[ 2059.298553] usb 2-1: unknown number of interfaces: 9
[ 2059.303680] usb 2-1: unknown number of interfaces: 9
[ 2059.308776] usb 2-1: unknown number of interfaces: 9

I don't get anything useful. Do I need to boot android before booting Linux or something? How does your lsusb look like?

Thanks,
Pavel

#7 lore raw

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

Do you have the related dts patches picked from next?

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

ifconfig? I thought I should get /dev/ttyUSB0..3?

I believe they are QMI via qmi_wwan, not TTYs.

Well, qmicli expects device path... and I see nothing on ifconfig. Any idea how the device would be named?

But I believe it just does not work, see the qcserial experiment with new_id below.

Best regards,
Pavel

Quoted 23 lines
Quoted 23 lines

But qcserial driver does not bind to that. If I attempt to force it:

root@devuan:/sys/bus/usb-serial/drivers/qcserial# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 22b8:2a70 Motorola PCS
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@devuan:/sys/bus/usb-serial/drivers/qcserial# echo "22b8 2a70" >
new_id
[ 2059.267730] usb 2-1: unknown number of interfaces: 9
[ 2059.272949] usb 2-1: unknown number of interfaces: 9
[ 2059.278045] usb 2-1: unknown number of interfaces: 9
[ 2059.283233] usb 2-1: unknown number of interfaces: 9
[ 2059.288330] usb 2-1: unknown number of interfaces: 9
[ 2059.293457] usb 2-1: unknown number of interfaces: 9
[ 2059.298553] usb 2-1: unknown number of interfaces: 9
[ 2059.303680] usb 2-1: unknown number of interfaces: 9
[ 2059.308776] usb 2-1: unknown number of interfaces: 9

I don't get anything useful. Do I need to boot android before booting Linux or something? How does your lsusb look like?

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#8 lore raw

Hi,

Quoted 13 lines · Pavel Machek

Hi!

Quoted 11 lines
Quoted 10 lines
Quoted 8 lines

Do you have the related dts patches picked from next?

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

ifconfig? I thought I should get /dev/ttyUSB0..3?

Quoted 7 lines
Quoted 1 line

I believe they are QMI via qmi_wwan, not TTYs.

Well, qmicli expects device path... and I see nothing on ifconfig. Any idea how the device would be named?

But I believe it just does not work, see the qcserial experiment with new_id below.

Dan is right, you need qmi_wwan driver. qmicli expects /dev/cdc-wdm<num> device. I use this on Droid 4:

qmicli -d /dev/cdc-wdm0 --some-other-option

-- Sebastian

Quoted 31 lines

Best regards,
Pavel

Quoted 23 lines
Quoted 23 lines

But qcserial driver does not bind to that. If I attempt to force it:

root@devuan:/sys/bus/usb-serial/drivers/qcserial# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 22b8:2a70 Motorola PCS
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@devuan:/sys/bus/usb-serial/drivers/qcserial# echo "22b8 2a70" >
new_id
[ 2059.267730] usb 2-1: unknown number of interfaces: 9
[ 2059.272949] usb 2-1: unknown number of interfaces: 9
[ 2059.278045] usb 2-1: unknown number of interfaces: 9
[ 2059.283233] usb 2-1: unknown number of interfaces: 9
[ 2059.288330] usb 2-1: unknown number of interfaces: 9
[ 2059.293457] usb 2-1: unknown number of interfaces: 9
[ 2059.298553] usb 2-1: unknown number of interfaces: 9
[ 2059.303680] usb 2-1: unknown number of interfaces: 9
[ 2059.308776] usb 2-1: unknown number of interfaces: 9

I don't get anything useful. Do I need to boot android before booting Linux or something? How does your lsusb look like?

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Tested-by
#9 lore raw
Quoted 21 lines · Sebastian Reichel

Hi,

Quoted 18 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

Do you have the related dts patches picked from next?

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming") e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

But yeah all you need to do is have phy-mapphone-mdm6600 and ohci-platform loaded and then ifconfig should show four wwan interfaces being added.

ifconfig? I thought I should get /dev/ttyUSB0..3?

I believe they are QMI via qmi_wwan, not TTYs.

Well, qmicli expects device path... and I see nothing on ifconfig. Any idea how the device would be named?

Quoted 7 lines
Quoted 2 lines

But I believe it just does not work, see the qcserial experiment with new_id below.

Dan is right, you need qmi_wwan driver. qmicli expects /dev/cdc-wdm<num> device. I use this on Droid 4:

qmicli -d /dev/cdc-wdm0 --some-other-option

Aha, there's ./drivers/usb/serial/usb_wwan.c and there's ./drivers/net/usb/qmi_wwan.o . That confused me.

qmicli now works for me, thanks!

Does ofonod work for you? I could not get that one to work...

ofonod[4083]: plugins/udevng.c:create_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[4083]: plugins/udevng.c:create_modem() driver=gobi ofonod[4083]: src/modem.c:ofono_modem_create() name: (null), type:
gobi
ofonod[4083]: plugins/udevng.c:setup_gobi() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm0 255/251/255 05 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan0 255/251/255 05 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm1 255/251/255 06 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan1 255/251/255 06 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm2 255/251/255 07 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan2 255/251/255 07 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm3 255/251/255 08 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan3 255/251/255 08 (null) (null) net
ofonod[4083]: plugins/udevng.c:destroy_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[4083]: src/modem.c:ofono_modem_remove() 0x5eb380 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm0 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan0 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm1 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan1 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm2 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan2 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm3 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan3 ofonod[4083]: plugins/upower.c:upower_connect() upower connect ofonod[4083]: plugins/hfp_hf_bluez5.c:connect_handler() Registering External Profile handler ...

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#10 lore raw
Quoted 36 lines · Pavel Machek
Quoted 26 lines · Sebastian Reichel

Hi,

Quoted 23 lines · Pavel Machek

Hi!

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines

Do you have the related dts patches picked from next?

fdd192037fce ("ARM: dts: omap4-droid4: Fix USB PHY port naming")
e5b9fd7bdeb5 ("ARM: dts: omap4-droid4: Configure MDM6600 USB PHY")

But yeah all you need to do is have phy-mapphone-mdm6600 and
ohci-platform loaded and then ifconfig should show four wwan
interfaces being added.

Quoted 3 lines
Quoted 1 line

ifconfig? I thought I should get /dev/ttyUSB0..3?

I believe they are QMI via qmi_wwan, not TTYs.

Well, qmicli expects device path... and I see nothing on ifconfig. Any
idea how the device would be named?

Quoted 8 lines
Quoted 3 lines

But I believe it just does not work, see the qcserial experiment with
new_id below.

Dan is right, you need qmi_wwan driver. qmicli expects /dev/cdc-wdm<num> device. I use this on Droid 4:

qmicli -d /dev/cdc-wdm0 --some-other-option

Quoted 8 lines

Aha, there's ./drivers/usb/serial/usb_wwan.c and there's ./drivers/net/usb/qmi_wwan.o . That confused me.

qmicli now works for me, thanks!

Does ofonod work for you? I could not get that one to work...

Because it's looking for a Gobi modem but the MDM6600 isn't one and doesn't expose that layout (and doesn't really need to anyway). I don't think ofono has a generic QMI driver, so you'd either need to for ce it to use the telitqmi or quectelqmi drivers, or write your own generic QMI one.

Dan

Quoted 43 lines

ofonod[4083]: plugins/udevng.c:create_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/u sb2/2-1
ofonod[4083]: plugins/udevng.c:create_modem() driver=gobi ofonod[4083]: src/modem.c:ofono_modem_create() name: (null), type:
gobi
ofonod[4083]: plugins/udevng.c:setup_gobi() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/u sb2/2-1
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm0 255/251/255 05 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan0 255/251/255 05 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm1 255/251/255 06 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan1 255/251/255 06 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm2 255/251/255 07 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan2 255/251/255 07 (null) (null) net
ofonod[4083]: plugins/udevng.c:setup_gobi() /dev/cdc-wdm3 255/251/255 08 (null) (null) usbmisc
ofonod[4083]: plugins/udevng.c:setup_gobi() wwan3 255/251/255 08 (null) (null) net
ofonod[4083]: plugins/udevng.c:destroy_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/u sb2/2-1
ofonod[4083]: src/modem.c:ofono_modem_remove() 0x5eb380 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm0 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan0 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm1 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan1 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm2 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan2 ofonod[4083]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm3 ofonod[4083]: plugins/udevng.c:destroy_modem() wwan3 ofonod[4083]: plugins/upower.c:upower_connect() upower connect ofonod[4083]: plugins/hfp_hf_bluez5.c:connect_handler() Registering External Profile handler ...

Pavel

#11 lore raw
Quoted 8 lines · Dan Williams
Quoted 1 line · Pavel Machek

Does ofonod work for you? I could not get that one to work...

Because it's looking for a Gobi modem but the MDM6600 isn't one and doesn't expose that layout (and doesn't really need to anyway). I don't think ofono has a generic QMI driver, so you'd either need to for ce it to use the telitqmi or quectelqmi drivers, or write your own generic QMI one.

We also get five USB uarts if we add the device id with something like the patch below. I don't quite get why we get five UARTS?

Also not sure if we should be using drivers/usb/serial/qcaux.c instead of qcserial.c?

And from what I recall trying it out, adding the USB UARTs somehow confused ModemManager I think, that needs to be retested though :)

And the USB UARTs added do not offer the same set of AT commands as the n_gsm serial mux.

Regards,

Tony

8< ------------------

drivers/usb/serial/qcserial.c +3 -0
@@ -181,6 +181,9 @@ static const struct usb_device_id id_table[] = {
 	/* Huawei devices */
 	{DEVICE_HWI(0x03f0, 0x581d)},	/* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */
 
+	/* Motorola devices */
+	{DEVICE_HWI(0x22b8, 0x2a70)},	/* Droid 4 mdm6600 */
+
 	{ }				/* Terminating entry */
 };
 MODULE_DEVICE_TABLE(usb, id_table);
Signature · 1 line
2.16.2
#12 lore raw
Quoted 4 lines · Tony Lindgren
Quoted 3 lines · Dan Williams
Quoted 1 line · Pavel Machek

Does ofonod work for you? I could not get that one to work...

Quoted 8 lines
Quoted 5 lines

Because it's looking for a Gobi modem but the MDM6600 isn't one and doesn't expose that layout (and doesn't really need to anyway). I don't think ofono has a generic QMI driver, so you'd either need to for ce it to use the telitqmi or quectelqmi drivers, or write your own generic QMI one.

We also get five USB uarts if we add the device id with something like the patch below. I don't quite get why we get five UARTS?

Not sure, either. Often more than one uart is useful, you get AT commands on one, while GPRS data flow on some other.

Quoted 9 lines

Also not sure if we should be using drivers/usb/serial/qcaux.c instead of qcserial.c?

And from what I recall trying it out, adding the USB UARTs somehow confused ModemManager I think, that needs to be retested though :)

And the USB UARTs added do not offer the same set of AT commands as the n_gsm serial mux.

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

AT+CMGF=1
AT+CMGS="123"
foo^Z

Works for SMS sending. Good.

(And... Thanks!)

Now, if someone knows what needs to be done to get GSM audio working, let me know. That's something I'd really like.

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#13 lore raw
Quoted 24 lines · Pavel Machek
Quoted 4 lines · Tony Lindgren
Quoted 3 lines · Dan Williams
Quoted 1 line · Pavel Machek

Does ofonod work for you? I could not get that one to work...

Quoted 8 lines
Quoted 5 lines

Because it's looking for a Gobi modem but the MDM6600 isn't one and doesn't expose that layout (and doesn't really need to anyway). I don't think ofono has a generic QMI driver, so you'd either need to for ce it to use the telitqmi or quectelqmi drivers, or write your own generic QMI one.

We also get five USB uarts if we add the device id with something like the patch below. I don't quite get why we get five UARTS?

Not sure, either. Often more than one uart is useful, you get AT commands on one, while GPRS data flow on some other.

Quoted 7 lines

Also not sure if we should be using drivers/usb/serial/qcaux.c instead of qcserial.c?

And from what I recall trying it out, adding the USB UARTs somehow confused ModemManager I think, that needs to be retested though :)

Quoted 6 lines
Quoted 2 lines

And the USB UARTs added do not offer the same set of AT commands as the n_gsm serial mux.

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

Is that to dial a voice call?

Quoted 5 lines

AT+CMGF=1
AT+CMGS="123"
foo^Z

Works for SMS sending. Good.

So what do you use for reading notifying and reading sms?

Quoted 2 lines

Now, if someone knows what needs to be done to get GSM audio working, let me know. That's something I'd really like.

I think it's the cpcap based config to route voice call audio to SoC, Sebastian knows the details :)

The way to figure that one out is to dump the cpcap registers before and during voice call on android with cpcaprw, then diff the output for the audio registers. Probably some SoC registers need to be diffed too with rwmem or similar tool for the mcbsp instance(s) used.

Regards,

Tony

#14 lore raw

Hi!

Quoted 5 lines
Quoted 3 lines

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

Is that to dial a voice call?

Yes. And it is ATD123; not ATD.

Quoted 7 lines
Quoted 5 lines

AT+CMGF=1
AT+CMGS="123"
foo^Z

Works for SMS sending. Good.

So what do you use for reading notifying and reading sms?

Well, did not try that, but they should just be displayed in the serial terminal.

Anyway, "good" solution is to get ofonod running, then use ofone from
here: https://github.com/pavelmachek/unicsy_demo

But parsing AT commands is easy enough that I can probably hack it together in few days if neccessary.

Quoted 11 lines
Quoted 2 lines

Now, if someone knows what needs to be done to get GSM audio working, let me know. That's something I'd really like.

I think it's the cpcap based config to route voice call audio to SoC, Sebastian knows the details :)

The way to figure that one out is to dump the cpcap registers before and during voice call on android with cpcaprw, then diff the output for the audio registers. Probably some SoC registers need to be diffed too with rwmem or similar tool for the mcbsp instance(s) used.

That sounds like hard way to do it. There's source available, I'm now trying to understand it / fit it into Sebastian's driver.

https://raw.githubusercontent.com/NotKit/android_kernel_motorola_omap4-common/hybris-11.0/sound/soc/codecs/cpcap.c

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#15 lore raw
Quoted 9 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 3 lines

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

Is that to dial a voice call?

Yes. And it is ATD123; not ATD.

Strange, no semicolon is needed when using /dev/gsmtty to dial a voice call with my current pile of pending changes, just doing ATD123 dials..

Anyways, looks like qmi_wwan needs to be loaded before qcserial module, otherwise we get nine ttyUSB instances and ModemManager can't find any modems.

With qcserial module loaded after qmi_wwan, it still takes a long time for ModemManager to find the modem.

Then unrelated to the qcserial module, also looks like I can no longer use the GPS with ModemManager:

$ mmcli -m 0 --enable
$ mmcli -m 0 --location-enable-gps-raw

And then chmod a+r /dev/cdc-wdm0 and pointing gpsd to use /dev/cdc-wdm0 used to work, but now it seems that gpsd can no longer read it. Trying to start gpsd manually produces:

# gpsd -b -n -N /dev/cdc-wdm0
gpsd:ERROR: SER: /dev/cdc-wdm0 already opened by another process
gpsd:ERROR: initial GPS device /dev/cdc-wdm0 open failed
gpsd:ERROR: can't run with neither control socket nor devices open

And lsof shows /usr/libexec/qmi-proxy having it open.

Anybody know what I might be doing wrong? Sounds like something now needs to be done with qmi-proxy to get access to GPS?

Quoted 2 lines
Quoted 2 lines

Anyway, "good" solution is to get ofonod running, then use ofone from
here: https://github.com/pavelmachek/unicsy_demo

Thanks I'll take a look.

Quoted 9 lines
Quoted 8 lines

I think it's the cpcap based config to route voice call audio to SoC, Sebastian knows the details :)

The way to figure that one out is to dump the cpcap registers before and during voice call on android with cpcaprw, then diff the output for the audio registers. Probably some SoC registers need to be diffed too with rwmem or similar tool for the mcbsp instance(s) used.

Quoted 4 lines

That sounds like hard way to do it. There's source available, I'm now trying to understand it / fit it into Sebastian's driver.

https://raw.githubusercontent.com/NotKit/android_kernel_motorola_omap4-common/hybris-11.0/sound/soc/codecs/cpcap.c

Sure that hopefully helps too :)

Tony

#16 lore raw

Hi!

Quoted 11 lines
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

Is that to dial a voice call?

Yes. And it is ATD123; not ATD.

Strange, no semicolon is needed when using /dev/gsmtty to dial a voice call with my current pile of pending changes, just doing ATD123 dials..

Interesting. Maybe I made some mistake in experiment.

Quoted 10 lines

Anyways, looks like qmi_wwan needs to be loaded before qcserial module, otherwise we get nine ttyUSB instances and ModemManager can't find any modems.

With qcserial module loaded after qmi_wwan, it still takes a long time for ModemManager to find the modem.

Then unrelated to the qcserial module, also looks like I can no longer use the GPS with ModemManager:

Quoted 6 lines
$ mmcli -m 0 --enable
$ mmcli -m 0 --location-enable-gps-raw

And then chmod a+r /dev/cdc-wdm0 and pointing gpsd to use /dev/cdc-wdm0 used to work, but now it seems that gpsd can no longer read it. Trying to start gpsd manually produces:

Thanks for hints, it would not be bad to get gps working. But .. voice calls. Those are important :-).

Quoted 9 lines
# gpsd -b -n -N /dev/cdc-wdm0
gpsd:ERROR: SER: /dev/cdc-wdm0 already opened by another process
gpsd:ERROR: initial GPS device /dev/cdc-wdm0 open failed
gpsd:ERROR: can't run with neither control socket nor devices open

And lsof shows /usr/libexec/qmi-proxy having it open.

Anybody know what I might be doing wrong? Sounds like something now needs to be done with qmi-proxy to get access to GPS?

Maybe kill the proxy and then look at cdc-wdm0 by hand? NMEA can be parsed by hand... quite easily.

Good night,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#17 lore raw
Quoted 8 lines · Pavel Machek

Hi!

Quoted 6 lines
Quoted 6 lines
Quoted 5 lines
Quoted 3 lines

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems to react to AT commands, and in particular reacts to ADT123; (; is important).

Is that to dial a voice call?

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

Yes. And it is ATD123; not ATD.

Strange, no semicolon is needed when using /dev/gsmtty to dial a voice call with my current pile of pending changes, just doing ATD123 dials..

Interesting. Maybe I made some mistake in experiment.

Looks like on /dev/ttyUSB4 doing AT+COPS? or AT+CREG? won't work while on /dev/gsmtty1 they work. So /dev/ttyUSB4 seems to a subset of what's available over n_gsm on ch1. Anyways, good to hear that /dev/ttyUSB4 can be used to debug voice calls :)

Quoted 2 lines

Thanks for hints, it would not be bad to get gps working. But .. voice calls. Those are important :-).

Yup, please keep us posted :) Meanwhile, I'll slowly continue getting the n_gsm stuff working.

Tony

#18 lore raw
Quoted 4 lines · Tony Lindgren

Looks like on /dev/ttyUSB4 doing AT+COPS? or AT+CREG? won't work while on /dev/gsmtty1 they work. So /dev/ttyUSB4 seems to a subset of what's available over n_gsm on ch1. Anyways, good to hear that /dev/ttyUSB4 can be used to debug voice calls :)

Hmm and now they work on /dev/ttyUSB4. Maybe I had SIM card poorly connected..

Tony

#19 lore raw
In reply to Tony Lindgren
Quoted 13 lines · Tony Lindgren
Quoted 11 lines · Pavel Machek

Hi!

Quoted 7 lines
Quoted 5 lines

Hmm. Interesting. Anyway, for me ttyUSB4 is interesting, as it seems
to react to AT commands, and in particular reacts to ADT123; (; is
important).

Is that to dial a voice call?

Yes. And it is ATD123; not ATD.

Quoted 7 lines

Strange, no semicolon is needed when using /dev/gsmtty to dial a voice call with my current pile of pending changes, just doing ATD123 dials..

Anyways, looks like qmi_wwan needs to be loaded before qcserial module, otherwise we get nine ttyUSB instances and ModemManager can't find any modems.

Use qcaux.c or option, unless the 6600 actually *does* have the same layout as Gobi 1K/2K/etc devices.

If you're going to use qcaux or optoin, then you need to use some variant of USB_DEVICE_AND_INTERFACE_INFO to lock the serial driver to the specific USB interfaces that expose the TTYs and to ignore the QMI interfaces and netdevs.

Dan

Quoted 53 lines

With qcserial module loaded after qmi_wwan, it still takes a long time for ModemManager to find the modem.

Then unrelated to the qcserial module, also looks like I can no longer use the GPS with ModemManager:

$ mmcli -m 0 --enable
$ mmcli -m 0 --location-enable-gps-raw

And then chmod a+r /dev/cdc-wdm0 and pointing gpsd to use /dev/cdc-wdm0 used to work, but now it seems that gpsd can no longer read it. Trying to start gpsd manually produces:

# gpsd -b -n -N /dev/cdc-wdm0
gpsd:ERROR: SER: /dev/cdc-wdm0 already opened by another process
gpsd:ERROR: initial GPS device /dev/cdc-wdm0 open failed
gpsd:ERROR: can't run with neither control socket nor devices open

And lsof shows /usr/libexec/qmi-proxy having it open.

Anybody know what I might be doing wrong? Sounds like something now needs to be done with qmi-proxy to get access to GPS?

Quoted 3 lines
Quoted 3 lines

Anyway, "good" solution is to get ofonod running, then use ofone from
here: https://github.com/pavelmachek/unicsy_demo

Thanks I'll take a look.

Quoted 9 lines
Quoted 8 lines

I think it's the cpcap based config to route voice call audio to SoC, Sebastian knows the details :)

The way to figure that one out is to dump the cpcap registers before and during voice call on android with cpcaprw, then diff the output for the audio registers. Probably some SoC registers need to be diffed too with rwmem or similar tool for the mcbsp instance(s) used.

Quoted 6 lines

That sounds like hard way to do it. There's source available, I'm now
trying to understand it / fit it into Sebastian's driver.

https://raw.githubusercontent.com/NotKit/android_kernel_motorola_om
ap4-common/hybris-11.0/sound/soc/codecs/cpcap.c

Sure that hopefully helps too :)

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#20 lore raw
Quoted 7 lines · Dan Williams
Quoted 3 lines · Tony Lindgren

Anyways, looks like qmi_wwan needs to be loaded before qcserial module, otherwise we get nine ttyUSB instances and ModemManager can't find any modems.

Use qcaux.c or option, unless the 6600 actually *does* have the same layout as Gobi 1K/2K/etc devices.

OK yeah I don't think it's Gobi.

Quoted 4 lines

If you're going to use qcaux or optoin, then you need to use some variant of USB_DEVICE_AND_INTERFACE_INFO to lock the serial driver to the specific USB interfaces that expose the TTYs and to ignore the QMI interfaces and netdevs.

OK thanks I'll take a look and post a patch after some testing.

Regards,

Tony

#21 lore raw
In reply to Dan Williams

Hi!

Quoted 7 lines
Quoted 1 line

Does ofonod work for you? I could not get that one to work...

Because it's looking for a Gobi modem but the MDM6600 isn't one and doesn't expose that layout (and doesn't really need to anyway). I don't think ofono has a generic QMI driver, so you'd either need to for ce it to use the telitqmi or quectelqmi drivers, or write your own generic QMI one.

You are right, it is detected as gobi now:

user@devuan:/my/ofono$ sudo python2 test/list-modems
[ /gobi_0 ]
    SystemPath =
    /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1
 Features =
 Emergency = 0
 Powered = 0
 Lockdown = 0
 Interfaces =
 Online = 0
 Type = hardware

...and nothing works.

commit db9b292f9290b97c87a8d4b4836af4763c06a39c

Author: Bassem Boubaker <[email protected]>
Date:   Mon Mar 19 17:57:31 2018 +0100

I tried this:

plugins/udevng.c +2 -2
index ff5d41af..6b103254 100644
@@ -1578,8 +1578,6 @@ static struct {
 	{ "mbm",	"cdc_ether",	"0930"		},
 	{ "mbm",	"cdc_ncm",	"0930"		},
 	{ "hso",	"hso"				},
-	{ "gobi",	"qmi_wwan"			},
-	{ "gobi",	"qcserial"			},
 	{ "sierra",	"qmi_wwan",	"1199"		},
 	{ "sierra",	"qcserial",	"1199"		},
 	{ "sierra",	"sierra"			},
@@ -1602,6 +1600,8 @@ static struct {
 	{ "telit",	"cdc_acm",	"1bc7", "0021"	},
 	{ "telitqmi",	"qmi_wwan",	"1bc7", "1201"	},
 	{ "telitqmi",	"option",	"1bc7", "1201"	},
+	{ "telitqmi",	"qmi_wwan",	"22b8", "2a70"	},
+	{ "telitqmi",	"option",	"22b8", "2a70"	},
 	{ "nokia",	"option",	"0421", "060e"	},
 	{ "nokia",	"option",	"0421", "0623"	},
 	{ "samsung",	"option",	"04e8", "6889"	},

But no luck:

ofonod[15879]: plugins/udevng.c:create_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[15879]: plugins/udevng.c:create_modem() driver=telitqmi ofonod[15879]: src/modem.c:ofono_modem_create() name: (null), type:
telitqmi
ofonod[15879]: plugins/udevng.c:setup_telitqmi() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[15879]: plugins/udevng.c:setup_telitqmi() /dev/cdc-wdm0 255/251/255 05 (null) usbmisc
ofonod[15879]: plugins/udevng.c:setup_telitqmi() wwan0 255/251/255 05 (null) net
ofonod[15879]: plugins/udevng.c:setup_telitqmi() /dev/cdc-wdm1 255/251/255 06 (null) usbmisc
ofonod[15879]: plugins/udevng.c:setup_telitqmi() wwan1 255/251/255 06 (null) net
ofonod[15879]: plugins/udevng.c:setup_telitqmi() /dev/cdc-wdm2 255/251/255 07 (null) usbmisc
ofonod[15879]: plugins/udevng.c:setup_telitqmi() wwan2 255/251/255 07 (null) net
ofonod[15879]: plugins/udevng.c:setup_telitqmi() /dev/cdc-wdm3 255/251/255 08 (null) usbmisc
ofonod[15879]: plugins/udevng.c:setup_telitqmi() wwan3 255/251/255 08 (null) net
ofonod[15879]: plugins/udevng.c:destroy_modem() /sys/devices/platform/44000000.ocp/4a064000.usbhshost/4a064800.ohci/usb2/2-1 ofonod[15879]: src/modem.c:ofono_modem_remove() 0x596480 ofonod[15879]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm0 ofonod[15879]: plugins/udevng.c:destroy_modem() wwan0 ofonod[15879]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm1 ofonod[15879]: plugins/udevng.c:destroy_modem() wwan1 ofonod[15879]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm2 ofonod[15879]: plugins/udevng.c:destroy_modem() wwan2 ofonod[15879]: plugins/udevng.c:destroy_modem() /dev/cdc-wdm3 ofonod[15879]: plugins/udevng.c:destroy_modem() wwan3 ofonod[15879]: plugins/upower.c:upower_connect() upower connect ofonod[15879]: plugins/hfp_hf_bluez5.c:connect_handler() Registering External Profile handler ...

With quectelqmi result was similar.

I know there are AT commands available at /dev/ttyUSB4. Is there easy way to make ofonod connect to that?

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html