Project

General

Profile

EC20 » History » Revision 2

Revision 1 (zecke, 09/26/2016 06:06 PM) → Revision 2/24 (zecke, 09/26/2016 06:07 PM)

h1. Wiki 

 Switching on adb (or fastboot or debug to NMEA console) 

 <pre> 
 AT+QLINUXCMD="/usr/bin/usb_uartdiag" 
 AT+QFASTBOOT 
 AT+QLINUXCMD="echo foo > /dev/ttyGS0" 
 </pre> 


 Changing qcserial.c to have adb and ttyUSBs.. Holger wants to upstream it after 32C3. 

 <pre> 
 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; 
                 } 
 
 </pre> 


 <pre> 
 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; 
 }
Add picture from clipboard (Maximum size: 48.8 MB)