New issue
Advanced search Search tips

Issue 680491 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Not able to access USB(FT232R USB UART) device through custom Javascript and not able to change the permission of /etc/udev/rules.d/ 50-vgem.rules

Reported by gg.gu...@gmail.com, Jan 12 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

Steps to reproduce the problem:
//For Angle Device
//var DEVICE_INFO = {"vendorId": 1027, "productId": 24577};

//For NFC Card Reader
var DEVICE_INFO = {"vendorId": 1839, "productId": 8704};
var searchForUsbDevice = function() {
    //debugger;
console.log('searchForUsbDevice()');
chrome.usb.findDevices(DEVICE_INFO, onDeviceFound);
}

var onDeviceFound = function(devices) {    
 if (devices) {
   if (0 < devices.length) {
     if (1 === devices.length) {
       device_ = devices[0];
       console.log("Device found. And opened?");
       getInterfaces();
       getConfiguration();
       claimInterface();
       //investigateDevice();
     } else {
       console.log("Ensure one and ONLY ONE device is plugged in.");
     }
   } else {
     console.log("Device could not be found");
     setTimeout(searchForUsbDevice, 1000);
   }
} else {
   console.log("Permission denied.");
}
};

var investigateDevice = function() {
//testBulkTransfer();
//testIsochronousTransfer();
testInterruptTransfer();
//testControlTransfer();
setTimeout(investigateDevice, 1000);
};

var testBulkTransfer = function() {
var transferInfo = {
   "direction": "in",
   "endpoint": 130,
  // "data": new Uint8Array([32, 2, 1, 2]).buffer
     "length": 2
};

chrome.usb.bulkTransfer(device_, transferInfo, function(info) {
   if (chrome.runtime.lastError) {
     console.log("info: " + JSON.stringify(info));
     console.log("runtime error: " + JSON.stringify(chrome.runtime.lastError.message));
     return;
   }

   console.log("transfer result: " + ((0 === info.resultCode) ? "succeeded" : "failed"));
});
};

var testInterruptTransfer = function() {
var transferInfo = {
   "direction": "in",
   "endpoint": 129,
  // "data": new Uint8Array([32, 2, 1, 2]).buffer
     "length": 8
};

   console.log('Calling chrome.usb.interruptTransfer()');
chrome.usb.interruptTransfer(device_, transferInfo, function(info) {
     console.log('chrome.runtime.lastError : ');
     console(chrome.runtime.lastError);
   if (chrome.runtime.lastError) {
     console.log("info: " + JSON.stringify(info));
     console.log("runtime error: " + JSON.stringify(chrome.runtime.lastError.message));
     return;
   }

   console.log("transfer result: " + ((0 === info.resultCode) ? "succeeded" : "failed"));
});
};

var getConfiguration = function() {
chrome.usb.getConfiguration(device_, function(config) {
   if (chrome.runtime.lastError) {
     console.log("runtime error: " + JSON.stringify(chrome.runtime.lastError.message));
     return;
   }
   console.log("config: ");
   console.log(config);
});
};

var claimInterface = function() {
   console.log('inside claimInterface : ');
   //chrome.usb.claimInterface( ConnectionHandle handle, integer interfaceNumber, function callback)
   chrome.usb.claimInterface(device_,129, function(interfaceclaim){
//chrome.usb.listInterfaces(device_, function(interface) {
   console.log("interfaceclaim: ");
   console.log(interfaceclaim);
   if (chrome.runtime.lastError) {
     console.log("runtime error: " + JSON.stringify(chrome.runtime.lastError.message));
     return;
   }

 });
};

var getInterfaces = function() {
chrome.usb.listInterfaces(device_, function(interfacelist) {
   if (chrome.runtime.lastError) {
     console.log("runtime error: " + JSON.stringify(chrome.runtime.lastError.message));
     return;
   }
   console.log("interfacelist: ");
   console.log(interfacelist);
   console.log(interfacelist[0].endpoints[0].address);
   console.log(interfacelist[0].endpoints[0].type);
   console.log(interfacelist[0].endpoints[0].direction);

   console.log(interfacelist[0].endpoints[1].address);
   console.log(interfacelist[0].endpoints[1].type);
   console.log(interfacelist[0].endpoints[1].direction);

   console.log(interfacelist[0].endpoints[2].address);
   console.log(interfacelist[0].endpoints[2].type);
   console.log(interfacelist[0].endpoints[2].direction);

 });
};

function deviceStart(){
   debugger;
searchForUsbDevice();
}

deviceStart();

Manifest.jason:

{
"name": "MCE USB Device Reader 1.0",
"version": "0.6",
"description": "This application displays detailed technical information about USB devices that are connected to your computer.",
"manifest_version": 2,
"minimum_chrome_version": "40.0.2213.0",
"app": {
   "background": {
     "scripts": ["background.js"]
   }
},

"permissions": ["usb",
   {
       "usbDevices": [
           {
               "vendorId": 1659,
               "productId": 8963
           },
           {

              "vendorId": 10007,
               "productId": 65344
           },
           {

              "vendorId": 1839,
               "productId": 8704
           },
           {

              "vendorId": 1027,
               "productId": 24577
           }
       ]
   }
],

"icons": {
   "128": "assets/icon_128.png"
}
}

What is the expected behavior?
Should be able to access USB(FT232R USB UART) device through custom Javascript 

What went wrong?
17:53:47] Permission broker failed to open the device: org.freedesktop.DBus.Error.Failed: permission_broker/permission_denied:Permission to open '/dev/bus/usb/001/050' denied 
2017-01-11T18:05:21.497324+08:00 INFO kernel: [29695.362182] usb 1-1: USB disconnect, device number 50
2017-01-11T18:05:21.498428+08:00 INFO kernel: [29695.362435] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
2017-01-11T18:05:21.498451+08:00 INFO kernel: [29695.362482] ftdi_sio 1-1:1.0: device disconnected
2017-01-11T18:05:42.698491+08:00 INFO kernel: [29716.579721] usb 1-1: new full-speed USB device number 52 using xhci_hcd
2017-01-11T18:05:42.715383+08:00 INFO kernel: [29716.596740] usb 1-1: New USB device found, idVendor=0403, idProduct=6001
2017-01-11T18:05:42.715460+08:00 INFO kernel: [29716.596756] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2017-01-11T18:05:42.715494+08:00 INFO kernel: [29716.596769] usb 1-1: Product: FT232R USB UART
2017-01-11T18:05:42.715522+08:00 INFO kernel: [29716.596778] usb 1-1: Manufacturer: FTDI
2017-01-11T18:05:42.715549+08:00 INFO kernel: [29716.596787] usb 1-1: SerialNumber: AL02LCVV
2017-01-11T18:05:42.717392+08:00 INFO kernel: [29716.599545] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
2017-01-11T18:05:42.717413+08:00 INFO kernel: [29716.599627] usb 1-1: Detected FT232RL
2017-01-11T18:05:42.717422+08:00 INFO kernel: [29716.599637] usb 1-1: Number of endpoints 2
2017-01-11T18:05:42.717428+08:00 INFO kernel: [29716.599646] usb 1-1: Endpoint 1 MaxPacketSize 64
2017-01-11T18:05:42.717434+08:00 INFO kernel: [29716.599656] usb 1-1: Endpoint 2 MaxPacketSize 64
2017-01-11T18:05:42.717440+08:00 INFO kernel: [29716.599666] usb 1-1: Setting MaxPacketSize 64
2017-01-11T18:05:42.719252+08:00 INFO kernel: [29716.600603] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
2017-01-11T18:05:42.750970+08:00 ERR laptop-mode[31119]: Couldn't acquire lock. Retrying.... PID is 31087\n
2017-01-11T18:05:42.771796+08:00 INFO laptop-mode[31130]: Laptop mode 
2017-01-11T18:05:42.773847+08:00 INFO laptop-mode[31131]: enabled, active
2017-01-11T18:05:43.270059+08:00 INFO laptop-mode[31721]: Laptop mode 
2017-01-11T18:05:43.271592+08:00 INFO laptop-mode[31722]: enabled, active
2017-01-11T18:07:15.102266+08:00 INFO kernel: [29809.059603] usb 1-2: USB disconnect, device number 51
2017-01-11T18:08:00.866288+08:00 INFO kernel: [29854.860748] usb 1-1: USB disconnect, device number 52
2017-01-11T18:08:00.867271+08:00 INFO kernel: [29854.861192] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
2017-01-11T18:08:00.867296+08:00 INFO kernel: [29854.861261] ftdi_sio 1-1:1.0: device disconnected
2017-01-11T18:10:15.866485+08:00 DEBUG kernel: [29989.970112] xhci_hcd 0000:00:14.0: setting latency timer to 64
2017-01-11T18:10:16.120520+08:00 INFO kernel: [29990.224257] usb 1-1: new full-speed USB device number 53 using xhci_hcd
2017-01-11T18:10:16.137428+08:00 INFO kernel: [29990.241285] usb 1-1: New USB device found, idVendor=0403, idProduct=6001
2017-01-11T18:10:16.137459+08:00 INFO kernel: [29990.241301] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2017-01-11T18:10:16.137466+08:00 INFO kernel: [29990.241313] usb 1-1: Product: FT232R USB UART
2017-01-11T18:10:16.137472+08:00 INFO kernel: [29990.241321] usb 1-1: Manufacturer: FTDI
2017-01-11T18:10:16.137478+08:00 INFO kernel: [29990.241329] usb 1-1: SerialNumber: AL02LCVV
2017-01-11T18:10:16.140372+08:00 INFO kernel: [29990.244279] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
2017-01-11T18:10:16.140435+08:00 INFO kernel: [29990.244350] usb 1-1: Detected FT232RL
2017-01-11T18:10:16.140467+08:00 INFO kernel: [29990.244360] usb 1-1: Number of endpoints 2
2017-01-11T18:10:16.140491+08:00 INFO kernel: [29990.244368] usb 1-1: Endpoint 1 MaxPacketSize 64
2017-01-11T18:10:16.140514+08:00 INFO kernel: [29990.244377] usb 1-1: Endpoint 2 MaxPacketSize 64
2017-01-11T18:10:16.140538+08:00 INFO kernel: [29990.244386] usb 1-1: Setting MaxPacketSize 64
2017-01-11T18:10:16.140564+08:00 INFO kernel: [29990.244613] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
2017-01-11T18:10:16.164186+08:00 ERR laptop-mode[1662]: Couldn't acquire lock. Retrying.... PID is 1629\n
2017-01-11T18:10:16.183887+08:00 INFO laptop-mode[1674]: Laptop mode 
2017-01-11T18:10:16.185695+08:00 INFO laptop-mode[1675]: enabled, active
2017-01-11T18:10:16.686911+08:00 INFO laptop-mode[2295]: Laptop mode 
2017-01-11T18:10:16.688442+08:00 INFO laptop-mode[2296]: enabled, active

2017-01-11T17:50:59.857399+08:00 INFO kernel: [28833.020497] tpm_tis tpm_tis: command 0x65 (size 20) returned code 0x0
2017-01-11T17:50:59.888368+08:00 INFO kernel: [28833.051349] tpm_tis tpm_tis: command 0x65 (size 22) returned code 0x0
2017-01-11T17:50:59.918365+08:00 INFO kernel: [28833.081839] tpm_tis tpm_tis: command 0x65 (size 22) returned code 0x0
2017-01-11T17:52:17.460795+08:00 INFO permission_broker[1201]: ProcessPath(/dev/bus/usb/001/050)
2017-01-11T17:52:17.476004+08:00 INFO permission_broker[1201]:   AllowUsbDeviceRule: ALLOW
2017-01-11T17:52:17.476087+08:00 INFO permission_broker[1201]:   AllowTtyDeviceRule: IGNORE
2017-01-11T17:52:17.494551+08:00 INFO permission_broker[1201]:   DenyClaimedUsbDeviceRule: DENY
2017-01-11T17:52:17.494626+08:00 INFO permission_broker[1201]: Verdict for /dev/bus/usb/001/050: DENY
2017-01-11T17:52:17.494697+08:00 ERR permission_broker[1201]: OpenPath(...): Domain=permission_broker, Code=permission_denied, Message=Permission to open '/dev/bus/usb/001/050' denied

Did this work before? No 

Chrome version: 55.0.2883.87  Channel: dev
OS Version: 40.0.2213.0
Flash Version: Shockwave Flash 24.0 r0
 
Components: Platform>Extensions>API Blink>USB
Status: WontFix (was: Unconfirmed)
This is working as intended. If the ftdi_sio driver has loaded and created a TTY device node for the device then it must be accessed through that TTY device node. An interface that is already claimed cannot be claimed by another driver or application.

Use the chrome.serial API to connect to the device.

Sign in to add a comment