반응형

usb serrial 연결시 permission때문에 minicom을 sudo로 실행해야 하는 귀찮음을 없애는 방법


리눅스에서 device들은 udev를 통해서 연결된다.

udevadm 이라는 것으로 세부사항을 살펴 볼 수 있는데.

아래와 같이 하면 여러 정보가 나온다.

$ udevadm info -a /dev/ttyUSB0 


이렇게 나오는 것 중에 장지를 구분 할 수 있는 인자를 사용해서 rule을 만들 수 있는데 여기서는 KERNEL 이랑 SUBSYSTEM을 가져다 쓰면 되겠다.


먼저 

$ sudo vi /etc/udev/rules.d/10-ttyUSB0.rules

로 파일을 만들고. (왜 번호를 쓰는지 잘 모르겠다.)

파일 안에는 다음과 같이 입력한다.


KERNEL=="ttyUSB[0-9]", SUBSYSTEMS=="tty" MODE="0666"


이렇게 하면 ttyUSB[0-9] 이면서 SUBSYSTEM 이 tty인 장치를 연결 할 때 permission을 0666 으로 주게 된다.


저장하고 USB Serial을 꼽으면 이렇게 잘 적용되는 것을 볼 수 있다.


$ls -al /dev/ttyUSB0 

crw-rw-rw- 1 root dialout 188, 0 10월 12 09:12 /dev/ttyUSB0






$ udevadm info -a /dev/ttyUSB0 


Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found, all possible attributes in the udev rules key format.

A rule to match, can be composed by the attributes of the device

and the attributes from one single parent device.


  looking at device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0':

    KERNEL=="ttyUSB0"

    SUBSYSTEM=="tty"

    DRIVER==""


  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0':

    KERNELS=="ttyUSB0"

    SUBSYSTEMS=="usb-serial"

    DRIVERS=="ftdi_sio"

    ATTRS{port_number}=="0"

    ATTRS{latency_timer}=="1"


  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0':

    KERNELS=="1-1.1:1.0"

    SUBSYSTEMS=="usb"

    DRIVERS=="ftdi_sio"

    ATTRS{bInterfaceClass}=="ff"

    ATTRS{bInterfaceSubClass}=="ff"

    ATTRS{bInterfaceProtocol}=="ff"

    ATTRS{bNumEndpoints}=="02"

    ATTRS{supports_autosuspend}=="1"

    ATTRS{bAlternateSetting}==" 0"

    ATTRS{bInterfaceNumber}=="00"

    ATTRS{interface}=="TTL232R-3V3"


  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1':

    KERNELS=="1-1.1"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceProtocol}=="00"

    ATTRS{devpath}=="1.1"

    ATTRS{idVendor}=="0403"

    ATTRS{speed}=="12"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bMaxPacketSize0}=="8"

    ATTRS{busnum}=="1"

    ATTRS{devnum}=="3"

    ATTRS{configuration}==""

    ATTRS{bMaxPower}=="90mA"

    ATTRS{authorized}=="1"

    ATTRS{bmAttributes}=="80"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{maxchild}=="0"

    ATTRS{bcdDevice}=="0600"

    ATTRS{avoid_reset_quirk}=="0"

    ATTRS{quirks}=="0x0"

    ATTRS{serial}=="FTGDTNLK"

    ATTRS{version}==" 2.00"

    ATTRS{urbnum}=="16"

    ATTRS{ltm_capable}=="no"

    ATTRS{manufacturer}=="FTDI"

    ATTRS{removable}=="unknown"

    ATTRS{idProduct}=="6001"

    ATTRS{bDeviceClass}=="00"

    ATTRS{product}=="TTL232R-3V3"


  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1':

    KERNELS=="1-1"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceProtocol}=="01"

    ATTRS{devpath}=="1"

    ATTRS{idVendor}=="8087"

    ATTRS{speed}=="480"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{busnum}=="1"

    ATTRS{devnum}=="2"

    ATTRS{configuration}==""

    ATTRS{bMaxPower}=="0mA"

    ATTRS{authorized}=="1"

    ATTRS{bmAttributes}=="e0"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{maxchild}=="4"

    ATTRS{bcdDevice}=="0000"

    ATTRS{avoid_reset_quirk}=="0"

    ATTRS{quirks}=="0x0"

    ATTRS{version}==" 2.00"

    ATTRS{urbnum}=="37"

    ATTRS{ltm_capable}=="no"

    ATTRS{removable}=="unknown"

    ATTRS{idProduct}=="0024"

    ATTRS{bDeviceClass}=="09"


  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1':

    KERNELS=="usb1"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceProtocol}=="00"

    ATTRS{devpath}=="0"

    ATTRS{idVendor}=="1d6b"

    ATTRS{speed}=="480"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{authorized_default}=="1"

    ATTRS{busnum}=="1"

    ATTRS{devnum}=="1"

    ATTRS{configuration}==""

    ATTRS{bMaxPower}=="0mA"

    ATTRS{authorized}=="1"

    ATTRS{bmAttributes}=="e0"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{maxchild}=="2"

    ATTRS{bcdDevice}=="0316"

    ATTRS{avoid_reset_quirk}=="0"

    ATTRS{quirks}=="0x0"

    ATTRS{serial}=="0000:00:1a.0"

    ATTRS{version}==" 2.00"

    ATTRS{urbnum}=="24"

    ATTRS{ltm_capable}=="no"

    ATTRS{manufacturer}=="Linux 3.16.0-38-generic ehci_hcd"

    ATTRS{removable}=="unknown"

    ATTRS{idProduct}=="0002"

    ATTRS{bDeviceClass}=="09"

    ATTRS{product}=="EHCI Host Controller"


  looking at parent device '/devices/pci0000:00/0000:00:1a.0':

    KERNELS=="0000:00:1a.0"

    SUBSYSTEMS=="pci"

    DRIVERS=="ehci-pci"

    ATTRS{irq}=="16"

    ATTRS{subsystem_vendor}=="0x1458"

    ATTRS{broken_parity_status}=="0"

    ATTRS{class}=="0x0c0320"

    ATTRS{companion}==""

    ATTRS{driver_override}=="(null)"

    ATTRS{consistent_dma_mask_bits}=="32"

    ATTRS{dma_mask_bits}=="32"

    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff"

    ATTRS{device}=="0x1c2d"

    ATTRS{uframe_periodic_max}=="100"

    ATTRS{enable}=="1"

    ATTRS{msi_bus}==""

    ATTRS{local_cpulist}=="0-7"

    ATTRS{vendor}=="0x8086"

    ATTRS{subsystem_device}=="0x5006"

    ATTRS{numa_node}=="-1"

    ATTRS{d3cold_allowed}=="1"


  looking at parent device '/devices/pci0000:00':

    KERNELS=="pci0000:00"

    SUBSYSTEMS==""

    DRIVERS==""



반응형

'Linux' 카테고리의 다른 글

Yocto 프로젝트 소프트웨어  (0) 2015.11.11
dd_rescue, dd  (0) 2015.10.07
리눅스에서 로지텍 웹캠 구동하기  (0) 2015.10.07
Posted by Real_G