Actions
EC20 » History » Revision 1
Revision 1/24
| Next »
zecke, 09/26/2016 06:06 PM
Wiki¶
Switching on adb (or fastboot or debug to NMEA console)
AT+QLINUXCMD="/usr/bin/usb_uartdiag" AT+QFASTBOOT AT+QLINUXCMD="echo foo > /dev/ttyGS0"
Changing qcserial.c to have adb and ttyUSBs..
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index 51da652..2d8d09e 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c @@ -176,8 +176,9 @@ static const struct usb_device_id id_table[] = { }; MODULE_DEVICE_TABLE(usb, id_table); -static int handle_quectel_ec20(struct device *dev, int ifnum) +static int handle_quectel_ec20(struct usb_device *usbdev, int ifnum) { + struct device *dev = &usbdev->dev; int altsetting = 0; /* @@ -201,10 +202,12 @@ static int handle_quectel_ec20(struct device *dev, int ifnum) dev_dbg(dev, "Quectel EC20 Modem port found\n"); break; case 4: - case 5: /* Don't claim the QMI/net or debug interface */ altsetting = -1; break; + case 5: + usb_set_interface(usbdev, ifnum, 0); + altsetting = -1; } return altsetting; @@ -285,7 +288,7 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id) case QCSERIAL_G2K: /* handle non-standard layouts */ if ((nintf == 5 || nintf == 6) && id->idProduct == QUECTEL_EC20_PID) { - altsetting = handle_quectel_ec20(dev, ifnum); + altsetting = handle_quectel_ec20(serial->dev, ifnum); goto done; }
Not working userspace code #include <libusb.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { struct libusb_device_handle *devh; int rc; rc = libusb_init(NULL); printf("%d\n", rc); devh = libusb_open_device_with_vid_pid(NULL, 0x05c6, 0x9215); if (!devh) { abort(); } rc = libusb_claim_interface(devh, 5); printf("%d\n", rc); //rc = libusb_detach_kernel_driver(devh, 5); //printf("%d\n", rc); rc = libusb_set_interface_alt_setting(devh, 5, 0); printf("%d\n", rc); ====> currently prints -5 but is like the one above.. return EXIT_FAILURE; }
Updated by zecke over 7 years ago · 1 revisions