Consistent Linux device enumerationIs 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?
When an imagined world resembles or has similarities with a famous world
Should I simplify my writing in a foreign country?
Need a little help Understanding how to build model's in Keras
Should I mention being denied entry to UK due to a confusion in my Visa and Ticket bookings?
Is there a word that describes the unjustified use of a more complex word?
Would a small hole in a Faraday cage drastically reduce its effectiveness at blocking interference?
Endgame puzzle: How to avoid stalemate and win?
Correct way of drawing empty, half-filled and fully filled circles?
Why would a military not separate its forces into different branches?
Is any special diet an effective treatment of autism?
Hostile Divisor Numbers
SOQL query WHERE filter by specific months
Why does sound not move through a wall?
Why did the Apollo 13 crew extend the LM landing gear?
How do LIGO and VIRGO know that a gravitational wave has its origin in a neutron star or a black hole?
Out of scope work duties and resignation
Why doesn't ever smooth vector bundle admits a line bundle?
Is the book wrong about the Nyquist Sampling Criterion?
Why did WWI include Japan?
As a GM, is it bad form to ask for a moment to think when improvising?
How to pass hash as password to ssh server
How should I tell my manager I'm not paying for an optional after work event I'm not going to?
Can there be a single technologically advanced nation, in a continent full of non-technologically advanced nations?
What was Bran's plan to kill the Night King?
Consistent Linux device enumeration
Is 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?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
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 Mar 20 at 11:03
Anthony Geoghegan
8,03154055
8,03154055
asked Mar 20 at 7:10
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
Mar 20 at 10:07
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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
Mar 20 at 10:07
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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
Mar 20 at 10:07
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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 Mar 20 at 8:49
answered Mar 20 at 7:58
thecarpythecarpy
2,7391028
2,7391028
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
Mar 20 at 10:07
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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
Mar 20 at 10:07
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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
Mar 20 at 10:07
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
Mar 20 at 10:07
1
1
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
Unfortunately, many no-name devices all have the serial number "0123456789abcdef". That's where it gets interesting.
– mosvy
Mar 20 at 11:03
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@mosvy are serial numbers unchangable?
– OganM
Mar 20 at 20:05
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
@OganM they may be changed ... if you're able to root the devices.
– mosvy
Mar 20 at 20:24
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