Project

General

Profile

Actions

EC20 » History » Revision 2

« Previous | Revision 2/24 (diff) | Next »
zecke, 09/26/2016 06:07 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.. Holger wants to upstream it after 32C3.

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;
}
Files (2)
ec20-naked-top.jpg View ec20-naked-top.jpg 4.38 MB EC20EA miniPCIe naked ynezz, 01/09/2017 07:32 PM
ec20-naked-top-small.jpg View ec20-naked-top-small.jpg 19.5 KB ynezz, 01/09/2017 07:37 PM

Updated by zecke over 7 years ago · 2 revisions

Add picture from clipboard (Maximum size: 48.8 MB)