Consistent Linux device enumeration2019 Community Moderator ElectionIs pvcreate destructive? Attempting to recover an lvm2 volume groupHow to check if unmount of USB device is completed?Safely remove usb from linux deviceHow to make a USB device report as “device busy”?Consistent enumeration of a btattached controllerHow to safely insert USB stick/device to Linux computer?why doesn't lsusb list a deviceSpecify Function on USB DeviceLinux - Why are my core IDs not consistent?AT commands communication establishment in Linux USB device driver
Why the "ls" command is showing the permissions of files in a FAT32 partition?
Can you identify this lizard-like creature I observed in the UK?
Is there a distance limit for minecart tracks?
Proving an identity involving cross products and coplanar vectors
How do I Interface a PS/2 Keyboard without Modern Techniques?
What is this high flying aircraft over Pennsylvania?
Why didn't Voldemort know what Grindelwald looked like?
Why is participating in the European Parliamentary elections used as a threat?
Should I warn a new PhD Student?
Anime with legendary swords made from talismans and a man who could change them with a shattered body
Should a narrator ever describe things based on a character's view instead of facts?
How to make a list of partial sums using forEach
How to test the sharpness of a knife?
Identifying "long and narrow" polygons in with PostGIS
How do you justify more code being written by following clean code practices?
When and why was runway 07/25 at Kai Tak removed?
I'm just a whisper. Who am I?
Why is the Sun approximated as a black body at ~ 5800 K?
PTIJ: Which Dr. Seuss books should one obtain?
How to leave product feedback on macOS?
Would a primitive species be able to learn English from reading books alone?
The Digit Triangles
What does "tick" mean in this sentence?
How were servants to the Kaiser of Imperial Germany treated and where may I find more information on them
Consistent Linux device enumeration
2019 Community Moderator ElectionIs pvcreate destructive? Attempting to recover an lvm2 volume groupHow to check if unmount of USB device is completed?Safely remove usb from linux deviceHow to make a USB device report as “device busy”?Consistent enumeration of a btattached controllerHow to safely insert USB stick/device to Linux computer?why doesn't lsusb list a deviceSpecify Function on USB DeviceLinux - Why are my core IDs not consistent?AT commands communication establishment in Linux USB device driver
In our Linux box we have USB -> serial device which was always identified as/dev/ttyACM0
. So I've written an application and until yesterday, everything worked fine. But suddenly (yeah, during the remote presentation ...) the device stopped working. After quick research, I found that the connection changed to /dev/ttyACM1
. It was a little untimely, but now I have a problem - how to unambiguously identify my device? Like, for example, the storage drive could be initialized using UUID although the /dev/sd**
has changed. Is there some way to do that for serial devices?
Now I use a stupid workaround:
for(int i = 0; i < 10; i ++)
O_NDELAY);
The link to the device we use.
linux usb-device
add a comment |
In our Linux box we have USB -> serial device which was always identified as/dev/ttyACM0
. So I've written an application and until yesterday, everything worked fine. But suddenly (yeah, during the remote presentation ...) the device stopped working. After quick research, I found that the connection changed to /dev/ttyACM1
. It was a little untimely, but now I have a problem - how to unambiguously identify my device? Like, for example, the storage drive could be initialized using UUID although the /dev/sd**
has changed. Is there some way to do that for serial devices?
Now I use a stupid workaround:
for(int i = 0; i < 10; i ++)
O_NDELAY);
The link to the device we use.
linux usb-device
add a comment |
In our Linux box we have USB -> serial device which was always identified as/dev/ttyACM0
. So I've written an application and until yesterday, everything worked fine. But suddenly (yeah, during the remote presentation ...) the device stopped working. After quick research, I found that the connection changed to /dev/ttyACM1
. It was a little untimely, but now I have a problem - how to unambiguously identify my device? Like, for example, the storage drive could be initialized using UUID although the /dev/sd**
has changed. Is there some way to do that for serial devices?
Now I use a stupid workaround:
for(int i = 0; i < 10; i ++)
O_NDELAY);
The link to the device we use.
linux usb-device
In our Linux box we have USB -> serial device which was always identified as/dev/ttyACM0
. So I've written an application and until yesterday, everything worked fine. But suddenly (yeah, during the remote presentation ...) the device stopped working. After quick research, I found that the connection changed to /dev/ttyACM1
. It was a little untimely, but now I have a problem - how to unambiguously identify my device? Like, for example, the storage drive could be initialized using UUID although the /dev/sd**
has changed. Is there some way to do that for serial devices?
Now I use a stupid workaround:
for(int i = 0; i < 10; i ++)
O_NDELAY);
The link to the device we use.
linux usb-device
linux usb-device
edited 16 hours ago
Anthony Geoghegan
7,89654055
7,89654055
asked 20 hours ago
folibisfolibis
20229
20229
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Since we are talking USB devices and assuming you have udev, you could setup some udev rules.
I guess, and this is just a wild guess, somebody or something unplugged/removed the device and plugged it back in/added the device again, which bumps up the number.
Now, first you need vendor and product id's:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Next, you need the serial number (in case you have several):
# udevadm info -a -n /dev/ttyUSB1 | grep 'serial' | head -n1
ATTRSserial=="A6008isP"
Now, lets create a udev rule:
UDEV rules are usually scattered into many files in /etc/udev/rules.d
. Create a new file called 99-usb-serial.rules
and put the following line in there, I have three devices, each with a a different serial number:
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
If you do not want the serial number, any device from vendor with same chip will then get the same symlink, only one can be plugged in at any given time.
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", SYMLINK+="MySerialDevice"
Taken from here
3
If you have a recent linux distribution, most likely it already automatically creates the device as/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.
– Josef
17 hours ago
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f507349%2fconsistent-linux-device-enumeration%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Since we are talking USB devices and assuming you have udev, you could setup some udev rules.
I guess, and this is just a wild guess, somebody or something unplugged/removed the device and plugged it back in/added the device again, which bumps up the number.
Now, first you need vendor and product id's:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Next, you need the serial number (in case you have several):
# udevadm info -a -n /dev/ttyUSB1 | grep 'serial' | head -n1
ATTRSserial=="A6008isP"
Now, lets create a udev rule:
UDEV rules are usually scattered into many files in /etc/udev/rules.d
. Create a new file called 99-usb-serial.rules
and put the following line in there, I have three devices, each with a a different serial number:
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
If you do not want the serial number, any device from vendor with same chip will then get the same symlink, only one can be plugged in at any given time.
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", SYMLINK+="MySerialDevice"
Taken from here
3
If you have a recent linux distribution, most likely it already automatically creates the device as/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.
– Josef
17 hours ago
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
add a comment |
Since we are talking USB devices and assuming you have udev, you could setup some udev rules.
I guess, and this is just a wild guess, somebody or something unplugged/removed the device and plugged it back in/added the device again, which bumps up the number.
Now, first you need vendor and product id's:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Next, you need the serial number (in case you have several):
# udevadm info -a -n /dev/ttyUSB1 | grep 'serial' | head -n1
ATTRSserial=="A6008isP"
Now, lets create a udev rule:
UDEV rules are usually scattered into many files in /etc/udev/rules.d
. Create a new file called 99-usb-serial.rules
and put the following line in there, I have three devices, each with a a different serial number:
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
If you do not want the serial number, any device from vendor with same chip will then get the same symlink, only one can be plugged in at any given time.
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", SYMLINK+="MySerialDevice"
Taken from here
3
If you have a recent linux distribution, most likely it already automatically creates the device as/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.
– Josef
17 hours ago
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
add a comment |
Since we are talking USB devices and assuming you have udev, you could setup some udev rules.
I guess, and this is just a wild guess, somebody or something unplugged/removed the device and plugged it back in/added the device again, which bumps up the number.
Now, first you need vendor and product id's:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Next, you need the serial number (in case you have several):
# udevadm info -a -n /dev/ttyUSB1 | grep 'serial' | head -n1
ATTRSserial=="A6008isP"
Now, lets create a udev rule:
UDEV rules are usually scattered into many files in /etc/udev/rules.d
. Create a new file called 99-usb-serial.rules
and put the following line in there, I have three devices, each with a a different serial number:
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
If you do not want the serial number, any device from vendor with same chip will then get the same symlink, only one can be plugged in at any given time.
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", SYMLINK+="MySerialDevice"
Taken from here
Since we are talking USB devices and assuming you have udev, you could setup some udev rules.
I guess, and this is just a wild guess, somebody or something unplugged/removed the device and plugged it back in/added the device again, which bumps up the number.
Now, first you need vendor and product id's:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Next, you need the serial number (in case you have several):
# udevadm info -a -n /dev/ttyUSB1 | grep 'serial' | head -n1
ATTRSserial=="A6008isP"
Now, lets create a udev rule:
UDEV rules are usually scattered into many files in /etc/udev/rules.d
. Create a new file called 99-usb-serial.rules
and put the following line in there, I have three devices, each with a a different serial number:
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", ATTRSserial=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
If you do not want the serial number, any device from vendor with same chip will then get the same symlink, only one can be plugged in at any given time.
SUBSYSTEM=="tty", ATTRSidVendor=="0403", ATTRSidProduct=="6001", SYMLINK+="MySerialDevice"
Taken from here
edited 18 hours ago
answered 19 hours ago
thecarpythecarpy
2,6301028
2,6301028
3
If you have a recent linux distribution, most likely it already automatically creates the device as/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.
– Josef
17 hours ago
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
add a comment |
3
If you have a recent linux distribution, most likely it already automatically creates the device as/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.
– Josef
17 hours ago
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
3
3
If you have a recent linux distribution, most likely it already automatically creates the device as
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.– Josef
17 hours ago
If you have a recent linux distribution, most likely it already automatically creates the device as
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. This might be enough for you without custom udev rules.– Josef
17 hours ago
1
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
16 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@mosvy are serial numbers unchangable?
– OganM
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
@OganM they may be changed ... if you're able to root the devices.
– mosvy
7 hours ago
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f507349%2fconsistent-linux-device-enumeration%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown