How to make Arduino (Snap) access serial port /dev/ttyUSB0 (or /dev/ttyACM0)?

18,511

Solution 1

The arduino-mhall119 snap is outdated and should not be used anymore. Use the arduino snap instead.:

snap install arduino

Using that snap, the only thing you need to do is add your own user to the dailout group:

sudo usermod -a -G dialout $USER

After this, reboot your device and open Arduino IDE.

Solution 2

2020 update

The arduino-mhall119 snap is outdated and should not be used anymore. Use the arduino snap instead.

See this answer for up to date info on how to get serial working with the arduino snap.

Old instructions

Install the snap in classic mode to allow access to ports

$ snap install arduino-mhall119 --classic

It's that simple. You should now have access to your serial ports! Happy Hacking!

Note: info below are needed for old Arduino 1.6.10.



Some interesting links that helped find the answer

Auto connected serial port interface

Lundamar says: Until the serial-port gadget/interface is improved to give access to all system serial devices you can get your snap working by simply installing it non-confined like so:

$ snap install tio --classic

It’s better than nothing but it surely would be best to run it confined with allowed access to serial tty devices.

Interfaces - serial-port

Interfaces reference:

serial-port
Can access serial ports. This is restricted because it provides privileged access to configure serial port hardware. Note that the slot is meant to be implemented by a gadget snap (this is not provided by the core snap).

Gadget providing serial-port slot

Solution 3

The solution of Joshua did not work for me anymore since I got the error:

Warning: flag --classic ignored for strictly confined snap arduino-mhall119

However, when using devmode instead it worked fine:

$ snap install arduino-mhall119 --devmode

Not sure if there are any further consequences with devmode though..

Share:
18,511

Related videos on Youtube

N0rbert
Author by

N0rbert

Updated on September 18, 2022

Comments

  • N0rbert
    N0rbert almost 2 years

    I have Ubuntu 18.04 LTS installed.

    I installed Arduino IDE v1.8.5 as a snap with

    snap install arduino-mhall119
    

    I have added my user to dial-out group and rebooted:

    sudo usermod -a -G dialout $USER
    
    $ groups 
    username adm dialout cdrom sudo dip plugdev lpadmin sambashare
    

    I connected my Arduino Nano to the laptop, it is detected on port /dev/ttyUSB0 (ch341-uart).

    $ ls /dev/ttyUSB0 -al
    crw-rw---- 1 root dialout 188, 0 авг 13 11:59 /dev/ttyUSB0
    

    I tried to upload the simpliest Blink sketch and get the following errors in the terminal:

    $ arduino-mhall119.arduino 
    
    
    avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied  
    Problem uploading to board.  See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.**
    

    Also I have installed arduino 1.8.5 with umake - it can access serial port in usual way.

    Note: we already have similar question here, but the solution was to use package from umake, not fix for the Snap.

    So my question is: How to make Arduino (Snap) access serial port /dev/ttyUSB0 (or /dev/ttyACM0)?

    Update: connecting serial-port to the snap fails with the following message

    $ snap connect arduino-mhall119:serial-port 
    error: snap "core" has no "serial-port" interface slots
    

    Current interfaces are:

    $ snap interfaces | grep arduino
    :home                            arduino-mhall119,gedit,organize-my-files,vlc
    :network                         arduino-mhall119,gedit,organize-my-files,pulsemixer,vlc
    :unity7                          arduino-mhall119,gedit,organize-my-files,vlc
    :x11                             arduino-mhall119,organize-my-files,pulsemixer,vlc
    -                                arduino-mhall119:serial-port
    

    Changing permissions of serial port to 777 with sudo chmod 777 /dev/ttyUSB0 does not help.

    The following do not work too (because of syntax errors):

    $ sudo snap connect arduino-mhall119:arduino
    error: snap "arduino-mhall119" has no plug named "arduino"
    
    $ snap connect arduino-mhall119:/dev/ttyUSB0
    error: snap "arduino-mhall119" has no plug named "/dev/ttyUSB0"
    
    $ snap connect arduino-mhall119
    error: cannot resolve connection, plug snap name is empty
    

    Information about YAML-manifest:

    $ ls -l /snap/arduino-mhall119/current/meta/snap.yaml
    -rw-r--r-- 1 root root 353 июл 28 00:20 /snap/arduino-mhall119/current/meta/snap.yaml
    
    $ cat /snap/arduino-mhall119/current/meta/snap.yaml |grep -A 12 slots
    
    $ cat /snap/arduino-mhall119/current/meta/snap.yaml |grep -A 5 plug
        plugs:
        - x11
        - unity7
        - home
        - network
        - serial-port
    
  • N0rbert
    N0rbert about 6 years
    Made your answer more comprehensive, so you can remove all comments below the question. Thank you for all you help!
  • Caio Mars
    Caio Mars almost 6 years
    Thank you. I was having the same problem and your solution worked for me. I don't understand though. A few months back my Arduino IDE was working fine, I didn't change anything, and now I just wasted 3 hours, added permissions to the ttyUSB0 (which were there to begin with), I already belonged to the group dialout, rebooted multiple times and prayed over and over. And a simple '--classic' solved it. Seriously man, wtf! I read your answer multiple times, it is gibberish to me. I'd think installing the IDE from Ubuntu Software manager should have worked right out of the box (like it did before).
  • Caio Mars
    Caio Mars almost 6 years
    Well, now there isn't the esp32 in the Board Manager. It feels like it's 1996 all over again.
  • Caio Mars
    Caio Mars almost 6 years
    Never mind, I'm kinda brain dead already and forgot to add the esp32 URL to the Board Manager in Preferences... thanks again for your solution.
  • Sebastian
    Sebastian over 4 years
    I am getting Warning: flag --classic ignored for strictly confined snap arduino-mhall119 and doesn't fix it