71

Since I updated from Ubuntu 10.04 (Lucid Lynx) to Ubuntu 12.04 (Precise Pangolin), I am unable to access the device connected in /ttyUSB0 if I don't have root access.

To be more specific, I use a USB-to-serial com port converter to access and configure Cisco equipment with software called PuTTY. It happens that, since I upgraded to 12.04, PuTTY only sees the connected device when I run it as gksudo putty. If not, it says "unable to connect to port /ttyUSB0".

I have managed to change the permissions via chmod 666, and it works, but if I disconnect the USB device and reconnect, it goes back to root only. How do I permanently allow non-root access? I have a clue it might be via udev rules, but I have no idea how to do it.

Obs.: Manufacturer and drivers are "PROLIFIC"

0

10 Answers 10

156

The device is most likely attached to user group dialout.

To find out which user group the device is attached to:

stat /dev/ttyUSB0

This should produce something like

Gid: (   20/ dialout)

Just add your user to the dialout group so you have appropriate permissions on the device.

sudo usermod -a -G dialout $USER

(You may need to logout and back in for the new group to take effect.)

No need to mess around with permissions or udev rules.

17
  • 3
    no success... still no acces to ttyUSB0 without root... any other ideas???
    – yurividal
    May 11, 2012 at 16:16
  • 1
    @tom-hennen I guess you should add it first as a comment rather than edit it directly.
    – MadMike
    Oct 29, 2014 at 13:33
  • 3
    This doesn't work for Debian
    – Mike
    May 16, 2015 at 16:51
  • 2
    Kudos for including "may need to logout and back in". Jul 26, 2018 at 13:57
  • 3
    In Ubuntu (I'm on 18.04), logout/login doesn't work. we have to reboot after doing usermod. Mar 2, 2019 at 6:42
14
sudo adduser <the user you want to add> dialout
sudo reboot

Mentioned by "Try now" worked for me. Check that You have dialout as group for ttyUSB0:

ls -l /dev/ttyUSB0

in my case the output is:

crw-rw---T 1 root dialout 188, 0 Feb 12 12:01 /dev/ttyUSB0
1
  • in Linux Mint 18 Cinnamon I get this error when calling ' ls -l /dev/ttyUSB0 ' ls: cannot access '/dev/ttyUSB0': No such file or directory Dec 8, 2016 at 22:56
13

It's possible this is related to modemmanager, as detailed here.

I removed that (sudo apt-get remove modemmanager) and it fixed my problem.

You still need to be in the dialout group though.

5
  • 2
    What if I can't remove modemmanager? I have a friend that has a 3G modem, and it seems he can't remove modemmanager because of that. How can he access /ttyUSB0 on 12.04 without root, but without removing modemmanager? Jul 19, 2013 at 12:22
  • You can try by stopping it? sudo stop modemmanager It worked for me.
    – Aleks
    Aug 12, 2014 at 9:19
  • Been a few years, but this is still the case in Ubuntu 17.10. Had to do a sudo apt-get purge modemmanager before sudo usermod -a -G dialout $USER had the desired effect.
    – Stéphane
    Nov 6, 2017 at 3:29
  • 2
    Please note: being in dialout group is sufficient if you do not use modemmanager in any way. The modemmanager removal is very case-specific to OPs situation, and is not a requirement every time. Dec 15, 2019 at 1:44
  • Thank you bro. That solved my problem. I got access denied fron non-root user while the permission of /dev/ttyUSB0 was 777 !
    – SuB
    Aug 1, 2021 at 7:29
4

As reported by Rinzwind, start by typing:

sudo usermod -a -G dialout $USER

But that is only part of the solution, as then you must reboot the system:

sudo reboot
2
  • 8
    1) Please don't post comments as answers. 2) No need to reboot; just log out and log back in.
    – gertvdijk
    Sep 11, 2014 at 12:07
  • 3
    I had to reboot to get this to work. A Logoff didn't propagate the change. Jun 3, 2019 at 20:19
3

This worked for me. Just press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command below.

sudo adduser <the user you want to add> dialout
sudo reboot
id -Gn

Try now.

3

I tried both

sudo usermod -a -G dialout $USER #(worked perfectly)

And sudo chmod 666 /dev/ttyUSB0 (worked but had to type the command again)

I also removed the mode manager but did not really help. Therefore, the best command that worked for me was

sudo usermod -a -G dialout $USER
1

On Ubuntu 18.04 I had to add myself to the tty group.

I got hinted by the minicom command output:

minicom  /dev/ttyUSB0
minicom: cannot open /dev/tty8: Permission denied


ls -la /dev/tty8
crw--w---- 1 root tty 4, 8 juil. 31 08:27 /dev/tty
2
  • @PeterMortensen Because in this particular situation minicom application also opens /dev/tty8 which is handled by entirely different group than dialout. Issue isn't directly related to /dev/ttyUSB0 in this particular scenario and adding to dialout group won't fix the problem. But it does prevent one from using /dev/ttyUSB0 , hence it is one of the possible answers to the question Dec 15, 2019 at 1:47
  • Checking the group associated to /dev/ttyUSB0 (group uucp on Arch Linux) and adding my user to that group was the solution for me. Thanks.
    – Paolo M
    Jul 1, 2020 at 8:22
-1

I had this problem with /dev/ttyS0 in Mint Rosa. Adding the user to the dialout group is required but in my case the device access was restricted and I had to expand it to give r/w access to group level also.

1
  • 1
    Welcome to Ask Ubuntu! I recommend editing this answer to expand it with specific details about how to do this. (See also How do I write a good answer? for general advice about what sorts of answers are considered most valuable on Ask Ubuntu.) Sep 4, 2016 at 18:42
-1

On Ubuntu 18.04:

  1. sudo adduser <user> dialout
  2. Full reboot, for some reason mere logout/login is not sufficient (bug report.).
0
-5

navigate to /etc/ folder and edit the group file add your username like this dialout:x:20:USER

worked perfect for me :)

1
  • 5
    It is generally considered bad practice to edit these files directly as some simple mistakes can cause loss of access.
    – flickerfly
    Apr 10, 2015 at 20:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .