06-14-2018 07:31 AM
Hello,
I get this error while trying to activate a docker app on iox. The app basically tries to communicate to the serial USB device connected to the router. I followed the instructions from https://developer.cisco.com/docs/iox/#!sample/universal-serial-bus-usb-usage-in-the-app
info about my setup:
os version: 1.6.3
<<<<<< package.yaml file >>>>>
app:
cpuarch: "x86_64"
type: docker
resources:
profile: c1.large
network:
-
interface-name: eth0
devices:
-
type: usbdev
label: HOST_DEV1
function: serial
vendorID: "0483"
productID: "5740"
mandatory: True
<<<<<< lsusb from the container console >>>>
# lsusb
Bus 002 Device 003: ID 0483:5740
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001
<<<<< dmesg output from the container console >>>>
usb 2-1: new full-speed USB device number 3 using ohci-pci
cdc_acm 2-1:1.0: ttyACM0: USB ACM device
<<< ioxclient platform device list snippet >>>>
"usbdev": [
{
"available": true,
"bus": "2",
"dev": "3",
"device_class": "02\n",
"device_id": "/dev/bus/usb/002/003",
"device_name": null,
"device_path": "/sys/devices/pci0000:00/0000:00:0a.0/usb2/2-1",
"generic_params": {},
"is_generic": false,
"is_storage": false,
"pid": "5740",
"port": null,
"storage_params": null,
"support_fstype": [
"vfat"
],
"type": "usbdev",
"used_by": null,
"vid": "0483"
}
<<<<<<</dev from the container>>>>>>>>
# ls -lrt /dev/
total 0
crw-rw-rw- 1 root root 1, 5 Jun 14 14:21 zero
crw-rw-rw- 1 root root 1, 9 Jun 14 14:21 urandom
lrwxrwxrwx 1 root root 10 Jun 14 14:21 tty1 -> /dev/pts/0
crw-rw-rw- 1 root root 5, 0 Jun 14 14:21 tty
lrwxrwxrwx 1 root root 15 Jun 14 14:21 stdout -> /proc/self/fd/1
lrwxrwxrwx 1 root root 15 Jun 14 14:21 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Jun 14 14:21 stderr -> /proc/self/fd/2
crw-rw-rw- 1 root root 1, 8 Jun 14 14:21 random
drwxr-xr-x 2 root root 0 Jun 14 14:21 pts
crw-rw-rw- 1 root root 5, 2 Jun 14 14:21 ptmx
crw-rw-rw- 1 root root 1, 3 Jun 14 14:21 null
drwxr-xr-x 2 nobody nobody 60 Jun 14 14:21 net
crw-rw-rw- 1 root root 1, 7 Jun 14 14:21 full
lrwxrwxrwx 1 root root 13 Jun 14 14:21 fd -> /proc/self/fd
lrwxrwxrwx 1 root root 10 Jun 14 14:21 console -> /dev/pts/0
/ #
the app ran locally on my PC fine with the following command;
docker run -t -i --device=/dev/ttyACM0 test-app"
could you please let me know what is still missing?
thanks,
06-18-2018 12:52 AM
Hi Arun,
Please check these related urls
Thanks and Regards,
Geevarghese
06-18-2018 10:59 PM
Hi Geevarghese,
I followed both the links that you pasted and I shared the error along with my configurations and output.
It would be great if you can help me looking at those configuration and output and let me know if there is something missing?
The USB device is also not listed by the localmanager.
thanks,
Arun
06-24-2018 08:00 PM
Please refer to https://developer.cisco.com/docs/iox/#!usb-device-usage/universal-serial-bus-usb and https://developer.cisco.com/docs/iox/#!sample.
And please note only USB storage and serial devices are supported for Cisco IOx.
06-27-2018 12:18 AM
Hello Steve,
I followed the link that you have shared. I've shared my package file and other outputs at the beginning of the thread.
Yes, I used a lorawan modem that can be enumerated as usb serial device.
I couldn't notice any obvious thing that is wrong in my configuration.
could you please let me know what can make a usb_serial device not to be listed by the localmanager? May be this could help further debugging the issue.
thanks,
06-28-2018 11:44 AM
I remember I have similar problem to use USB long time ago, don't remember what exactly was the error.
I remember I have to change one or two of following in yaml file, either product id , vendor id or device id or the combination of them.
Just FYI, don't if it helps.
devices:
-
type: usbdev
label: HOST_DEV
usage: Needs usb storage device to persist data
function: storage
mandatory: True
mount-point: /extra/storage/
device-directory-to-mount: /home/root/testUSB
vendorID: "067b"
productID: "2517"
"devices": [{"type": "usbdev", "label": "HOST_DEV", "device-id": "/dev/bus/usb/001/006", "vid":"067b", "pid":"2517"}]
}
07-04-2018 12:32 AM
I use the values of vid, pid of the device from the output of "ioxclient platform device list" and also I'm using the device as serial usb device.
I still see the USB device as undefined in ioxLocalManager.
output of "ioxclient platform device list" >>>>
"usbdev": [
{
"available": true,
"bus": "2",
"dev": "4",
"device_class": "02\n",
"device_id": "/dev/bus/usb/002/004",
"device_name": null,
"device_path": "/sys/devices/pci0000:00/0000:00:0a.0/usb2/2-1",
"generic_params": {},
"is_generic": false,
"is_storage": false,
"pid": "5740",
"port": null,
"storage_params": null,
"support_fstype": [
"vfat"
],
"type": "usbdev",
"used_by": null,
"vid": "0483"
}
package.yaml >>>>
app:
cpuarch: "x86_64"
type: docker
resources:
profile: c1.large
network:
-
interface-name: eth0
devices:
-
type: usbdev
label: HOST_DEV1
function: serial
vendorID: "0483"
productID: "5740"
mandatory: True
07-05-2018 01:21 PM
Have you checked this doc see if the USB is recognized and mounted properly?
I ioxclient platform output looks like this:
"usbdev": [
{
"available": true,
"bus": "1",
"dev": "2",
"device_class": "00\n",
"device_id": "/dev/bus/usb/001/002",
"device_name": "/dev/sdc1",
"device_path": "/sys/devices/pci0000:00/0000:00:09.0/usb1/1-1",
"generic_params": null,
"is_generic": false,
"is_storage": true,
"pid": "2517",
"port": null,
"storage_params": {
"device_name": "/dev/sdc1",
"fs_label": "CORSAIR",
"fs_uuid": "1C2E-5359",
"fstype": "vfat",
"model": "USB_Mass_Storage_Device",
"mount_point": null,
"vendor": "Prolific_Technology_Inc."
},
"support_fstype": [
"vfat"
],
"type": "usbdev",
"used_by": null,
"vid": "067b"
}
],
"usbport": [
{
"available": true,
"device_id": "usb2",
"device_name": "usb-serial",
"ds_dids": [],
"support_fstype": [
"vfat"
],
"type": "usbport",
"used_by": null
},
{
"available": true,
"device_id": "usb1",
"device_name": "usb-ports",
"ds_dids": [
"/dev/bus/usb/001/002"
],
"pbus": "00",
"pdomain": "0000",
"pfunc": "0",
"pslot": "09",
"support_fstype": [
"vfat"
],
"type": "usbport",
"used_by": null
}
]
}
07-06-2018 02:03 AM
yep, I could see it in lsusb and also in /dev
root@Cisco829-GOS-1:~# ls -lrt /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Jul 6 09:21 /dev/ttyACM0
root@Cisco829-GOS-1:~# lsusb
Bus 002 Device 005: ID 0483:5740
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001
root@Cisco829-GOS-1:~#
07-06-2018 11:13 AM
Have you tried to activate it from ioxclient ? (with debug)
07-25-2018 01:54 AM
yes, I tried it with ioxclient and wasn't a successful try.
I will post the logs from debug here, shortly.
07-25-2018 02:10 AM
yes, I tried it with IOX client and wasn't a successful try.
I will post the logs from debug here, shortly.
07-25-2018 09:02 AM
07-26-2018 01:09 AM
"device-name" - I couldn't find any definition for this field in https://developer.cisco.com/docs/iox/#!usb-device-usage/universal-serial-bus-usb. but it seems to be a mandatory field because without which I get the following error.
ioxclient application activate test --payload activation_storage.json
Currently active profile : tcp-app-test
Command Name: application-activate
Payload file : activation_storage.json. Will pass it as application/json in request body..
2018/07/26 10:08:03 POST /iox/api/v2/hosting/apps/test/state?action=activate HTTP/1.1
Host: 192.168.1.112:8443
Content-Type: application/json
X-Token-Id: dd55ab15-c593-4367-8129-5467c445e8fb
{
"resources": {
"profile": "c1.large",
"cpu": "600",
"memory": "256",
"disk": "20",
"network": [{"interface-name": "eth0", "network-name": "iox-bridge0"}],
"devices": [{"type": "usbdev", "label": "/dev/ttyACM0", "device-id": "/dev/bus/usb/002/002", "vid":"0483", "pid":"5740"}]
}
}
Error. Server returned 500
{
"description": "App Activation error: 'device-name'",
"errorcode": -1021,
"message": "Error while changing app state"
}
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide