nRF24L01 без root, помогите

Тема в разделе "Raspberry Pi", создана пользователем SNAK84, 5 май 2018.

  1. SNAK84

    SNAK84 Нерд

    Собрал библиотеку http://tmrh20.github.io/RF24
    Скомпилировал пример, но возникла проблема запуска от пользователя.

    От root все работает, а при запуске от пользователя возникает ошибка

    Пользователю добавил следующие группы:

    Код (Bash):
    uid=1000(pi) gid=1000(pi) группы=1000(pi),0(root),108(netdev),999(spi),998(i2c),997(gpio)
    Код (Bash):
    RF24/examples/scanner/
    Ошибка сегментирования
    В google решение проблемы не нашел.
     
  2. Igor68

    Igor68 Гуру

    А ls -al /dev что показал? Для кого доступны устройства? В Вашем случае, как понимаю интересует SPI, I2C, GPIO. Будет понятно для кого и что доступно. А после изменения доступа надо обновить сессию.
     
  3. SNAK84

    SNAK84 Нерд


    Код (Bash):
    crw-r--r--  1 root root     10, 235 май  5 00:17 autofs
    drwxr-xr-x  2 root root         640 май  5 00:17 block
    crw-------  1 root root     10, 234 май  5 00:17 btrfs-control
    drwxr-xr-x  3 root root          60 янв  1  1970 bus
    crw-------  1 root root     10,  63 май  5 00:17 cachefiles
    drwxr-xr-x  2 root root        2480 май  5 00:17 char
    crw-------  1 root root      5,   1 май  5 00:19 console
    crw-------  1 root root     10,  62 май  5 00:17 cpu_dma_latency
    crw-------  1 root root     10, 203 май  5 00:17 cuse
    drwxr-xr-x  7 root root         140 май  5 00:17 disk
    crw-rw----  1 root video    29,   0 май  5 00:17 fb0
    lrwxrwxrwx  1 root root          13 ноя  3  2016 fd -> /proc/self/fd
    crw-rw-rw-  1 root root      1,   7 май  5 00:17 full
    crw-rw-rw-  1 root root     10, 229 май  5 00:17 fuse
    crw-rw----  1 root gpio    254,   0 май  5 00:17 gpiochip0
    crw-rw----  1 root gpio    254,   1 май  5 00:17 gpiochip1
    crw-rw----  1 root gpio    254,   2 май  5 00:17 gpiochip2
    crw-rw----  1 root gpio    248,   0 май  5 00:17 gpiomem
    crw-------  1 root root     10, 183 май  5 00:17 hwrng
    crw-rw----  1 root i2c      89,   1 май  5 00:17 i2c-1
    lrwxrwxrwx  1 root root          25 ноя  3  2016 initctl -> /run/systemd/initctl/fifo
    drwxr-xr-x  2 root root          60 янв  1  1970 input
    crw-r--r--  1 root root      1,  11 май  5 00:17 kmsg
    lrwxrwxrwx  1 root root          28 ноя  3  2016 log -> /run/systemd/journal/dev-log
    brw-rw----  1 root disk      7,   0 май  5 00:17 loop0
    brw-rw----  1 root disk      7,   1 май  5 00:17 loop1
    brw-rw----  1 root disk      7,   2 май  5 00:17 loop2
    brw-rw----  1 root disk      7,   3 май  5 00:17 loop3
    brw-rw----  1 root disk      7,   4 май  5 00:17 loop4
    brw-rw----  1 root disk      7,   5 май  5 00:17 loop5
    brw-rw----  1 root disk      7,   6 май  5 00:17 loop6
    brw-rw----  1 root disk      7,   7 май  5 00:17 loop7
    crw-rw----  1 root disk     10, 237 май  5 00:17 loop-control
    drwxr-xr-x  2 root root          60 май  5 00:17 mapper
    crw-r-----  1 root kmem      1,   1 май  5 00:17 mem
    crw-------  1 root root     10,  59 май  5 00:17 memory_bandwidth
    brw-rw----  1 root disk    179,   0 май  5 00:17 mmcblk0
    brw-rw----  1 root disk    179,   1 май  5 00:17 mmcblk0p1
    brw-rw----  1 root disk    179,   2 май  5 00:17 mmcblk0p2
    brw-rw----  1 root disk    179,   5 май  5 00:17 mmcblk0p5
    brw-rw----  1 root disk    179,   6 май  5 00:17 mmcblk0p6
    brw-rw----  1 root disk    179,   7 май  5 00:17 mmcblk0p7
    drwxrwxrwt  2 root root          40 янв  1  1970 mqueue
    drwxr-xr-x  2 root root          60 май  5 00:17 net
    crw-------  1 root root     10,  61 май  5 00:17 network_latency
    crw-------  1 root root     10,  60 май  5 00:17 network_throughput
    crw-rw-rw-  1 root root      1,   3 май  5 00:17 null
    crw-------  1 root root    108,   0 май  5 00:17 ppp
    crw-rw-rw-  1 root tty       5,   2 май  5 16:32 ptmx
    drwxr-xr-x  2 root root           0 ноя  3  2016 pts
    brw-rw----  1 root disk      1,   0 май  5 00:17 ram0
    brw-rw----  1 root disk      1,   1 май  5 00:17 ram1
    brw-rw----  1 root disk      1,  10 май  5 00:17 ram10
    brw-rw----  1 root disk      1,  11 май  5 00:17 ram11
    brw-rw----  1 root disk      1,  12 май  5 00:17 ram12
    brw-rw----  1 root disk      1,  13 май  5 00:17 ram13
    brw-rw----  1 root disk      1,  14 май  5 00:17 ram14
    brw-rw----  1 root disk      1,  15 май  5 00:17 ram15
    brw-rw----  1 root disk      1,   2 май  5 00:17 ram2
    brw-rw----  1 root disk      1,   3 май  5 00:17 ram3
    brw-rw----  1 root disk      1,   4 май  5 00:17 ram4
    brw-rw----  1 root disk      1,   5 май  5 00:17 ram5
    brw-rw----  1 root disk      1,   6 май  5 00:17 ram6
    brw-rw----  1 root disk      1,   7 май  5 00:17 ram7
    brw-rw----  1 root disk      1,   8 май  5 00:17 ram8
    brw-rw----  1 root disk      1,   9 май  5 00:17 ram9
    crw-rw-rw-  1 root root      1,   8 май  5 00:17 random
    drwxr-xr-x  2 root root          60 янв  1  1970 raw
    crw-rw-r--  1 root netdev   10,  58 май  5 00:17 rfkill
    lrwxrwxrwx  1 root root           7 май  5 00:17 serial1 -> ttyAMA0
    drwxrwxrwt  2 root root          40 ноя  3  2016 shm
    drwxr-xr-x  3 root root         160 май  5 00:17 snd
    crw-rw----  1 root spi     153,   0 май  5 00:17 spidev0.0
    crw-rw----  1 root spi     153,   1 май  5 00:17 spidev0.1
    lrwxrwxrwx  1 root root          15 ноя  3  2016 stderr -> /proc/self/fd/2
    lrwxrwxrwx  1 root root          15 ноя  3  2016 stdin -> /proc/self/fd/0
    lrwxrwxrwx  1 root root          15 ноя  3  2016 stdout -> /proc/self/fd/1
    crw-rw-rw-  1 root tty       5,   0 май  5 00:17 tty
    crw--w----  1 root tty       4,   0 май  5 00:17 tty0
    crw--w----  1 root tty       4,   1 май  5 00:17 tty1
    crw--w----  1 root tty       4,  10 май  5 00:17 tty10
    crw--w----  1 root tty       4,  11 май  5 00:17 tty11
    crw--w----  1 root tty       4,  12 май  5 00:17 tty12
    crw--w----  1 root tty       4,  13 май  5 00:17 tty13
    crw--w----  1 root tty       4,  14 май  5 00:17 tty14
    crw--w----  1 root tty       4,  15 май  5 00:17 tty15
    crw--w----  1 root tty       4,  16 май  5 00:17 tty16
    crw--w----  1 root tty       4,  17 май  5 00:17 tty17
    crw--w----  1 root tty       4,  18 май  5 00:17 tty18
    crw--w----  1 root tty       4,  19 май  5 00:17 tty19
    crw--w----  1 root tty       4,   2 май  5 00:17 tty2
    crw--w----  1 root tty       4,  20 май  5 00:17 tty20
    crw--w----  1 root tty       4,  21 май  5 00:17 tty21
    crw--w----  1 root tty       4,  22 май  5 00:17 tty22
    crw--w----  1 root tty       4,  23 май  5 00:17 tty23
    crw--w----  1 root tty       4,  24 май  5 00:17 tty24
    crw--w----  1 root tty       4,  25 май  5 00:17 tty25
    crw--w----  1 root tty       4,  26 май  5 00:17 tty26
    crw--w----  1 root tty       4,  27 май  5 00:17 tty27
    crw--w----  1 root tty       4,  28 май  5 00:17 tty28
    crw--w----  1 root tty       4,  29 май  5 00:17 tty29
    crw--w----  1 root tty       4,   3 май  5 00:17 tty3
    crw--w----  1 root tty       4,  30 май  5 00:17 tty30
    crw--w----  1 root tty       4,  31 май  5 00:17 tty31
    crw--w----  1 root tty       4,  32 май  5 00:17 tty32
    crw--w----  1 root tty       4,  33 май  5 00:17 tty33
    crw--w----  1 root tty       4,  34 май  5 00:17 tty34
    crw--w----  1 root tty       4,  35 май  5 00:17 tty35
    crw--w----  1 root tty       4,  36 май  5 00:17 tty36
    crw--w----  1 root tty       4,  37 май  5 00:17 tty37
    crw--w----  1 root tty       4,  38 май  5 00:17 tty38
    crw--w----  1 root tty       4,  39 май  5 00:17 tty39
    crw--w----  1 root tty       4,   4 май  5 00:17 tty4
    crw--w----  1 root tty       4,  40 май  5 00:17 tty40
    crw--w----  1 root tty       4,  41 май  5 00:17 tty41
    crw--w----  1 root tty       4,  42 май  5 00:17 tty42
    crw--w----  1 root tty       4,  43 май  5 00:17 tty43
    crw--w----  1 root tty       4,  44 май  5 00:17 tty44
    crw--w----  1 root tty       4,  45 май  5 00:17 tty45
    crw--w----  1 root tty       4,  46 май  5 00:17 tty46
    crw--w----  1 root tty       4,  47 май  5 00:17 tty47
    crw--w----  1 root tty       4,  48 май  5 00:17 tty48
    crw--w----  1 root tty       4,  49 май  5 00:17 tty49
    crw--w----  1 root tty       4,   5 май  5 00:17 tty5
    crw--w----  1 root tty       4,  50 май  5 00:17 tty50
    crw--w----  1 root tty       4,  51 май  5 00:17 tty51
    crw--w----  1 root tty       4,  52 май  5 00:17 tty52
    crw--w----  1 root tty       4,  53 май  5 00:17 tty53
    crw--w----  1 root tty       4,  54 май  5 00:17 tty54
    crw--w----  1 root tty       4,  55 май  5 00:17 tty55
    crw--w----  1 root tty       4,  56 май  5 00:17 tty56
    crw--w----  1 root tty       4,  57 май  5 00:17 tty57
    crw--w----  1 root tty       4,  58 май  5 00:17 tty58
    crw--w----  1 root tty       4,  59 май  5 00:17 tty59
    crw--w----  1 root tty       4,   6 май  5 00:17 tty6
    crw--w----  1 root tty       4,  60 май  5 00:17 tty60
    crw--w----  1 root tty       4,  61 май  5 00:17 tty61
    crw--w----  1 root tty       4,  62 май  5 00:17 tty62
    crw--w----  1 root tty       4,  63 май  5 00:17 tty63
    crw--w----  1 root tty       4,   7 май  5 00:17 tty7
    crw--w----  1 root tty       4,   8 май  5 00:17 tty8
    crw--w----  1 root tty       4,   9 май  5 00:17 tty9
    crw-rw----  1 root dialout 204,  64 май  5 00:17 ttyAMA0
    crw-------  1 root root      5,   3 май  5 00:17 ttyprintk
    crw-------  1 root root     10, 239 май  5 00:17 uhid
    crw-------  1 root root     10, 223 май  5 00:17 uinput
    crw-rw-rw-  1 root root      1,   9 май  5 00:17 urandom
    crw-rw----  1 root video   245,   0 май  5 00:17 vchiq
    crw-rw----  1 root video   249,   0 май  5 00:17 vcio
    crw-------  1 root root    250,   0 май  5 00:17 vc-mem
    crw-rw----  1 root tty       7,   0 май  5 00:17 vcs
    crw-rw----  1 root tty       7,   1 май  5 00:17 vcs1
    crw-rw----  1 root tty       7,   2 май  5 00:17 vcs2
    crw-rw----  1 root tty       7,   3 май  5 00:17 vcs3
    crw-rw----  1 root tty       7,   4 май  5 00:17 vcs4
    crw-rw----  1 root tty       7,   5 май  5 00:17 vcs5
    crw-rw----  1 root tty       7,   6 май  5 00:17 vcs6
    crw-rw----  1 root tty       7, 128 май  5 00:17 vcsa
    crw-rw----  1 root tty       7, 129 май  5 00:17 vcsa1
    crw-rw----  1 root tty       7, 130 май  5 00:17 vcsa2
    crw-rw----  1 root tty       7, 131 май  5 00:17 vcsa3
    crw-rw----  1 root tty       7, 132 май  5 00:17 vcsa4
    crw-rw----  1 root tty       7, 133 май  5 00:17 vcsa5
    crw-rw----  1 root tty       7, 134 май  5 00:17 vcsa6
    crw-rw----  1 root video   246,   0 май  5 00:17 vcsm
    crw-------  1 root root     10, 137 май  5 00:17 vhci
    crw-------  1 root root     10, 130 май  5 00:17 watchdog
    crw-------  1 root root    252,   0 май  5 00:17 watchdog0
    crw-rw-rw-  1 root root      1,   5 май  5 00:17 zero
     
    сессию обновлял.
     
  4. Igor68

    Igor68 Гуру

    Вот смотрите что Вы показали
    Код (Text):

    crw-rw----  1 root gpio    254,   0 май  5 00:17 gpiochip0
    crw-rw----  1 root gpio    254,   1 май  5 00:17 gpiochip1
    crw-rw----  1 root gpio    254,   2 май  5 00:17 gpiochip2
    crw-rw----  1 root i2c      89,   1 май  5 00:17 i2c-1
    crw-rw----  1 root spi     153,   0 май  5 00:17 spidev0.0
    crw-rw----  1 root spi     153,   1 май  5 00:17 spidev0.1
     
    Вот одно из решений... возможно и не верное (в смысле защиты доступа). Это разрешить доступ к устройству... для всех пользователей при включении питания и/или запуске/перезапуске системы прописав правила в файл /etc/rc.local
    напримертак:
    Код (Text):

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi

    #это для моего RAMDISK - только в моём случае
    /etc/init.d/ramdisk restart
    #это для монтирования RAMDISK - только в моём случае
    mount --bind /mnt/ram0 /home/httpd/ramdisk
    #что-то запускаю при старте - только в моём случае
    su www-data -c /home/httpd/bash/wwstart &
    #запускаю прокси - только в моём случае
    /etc/init.d/3proxyinit start

    #а это разрешение доступа к устройству например gpiochip0
    chmod 777 /dev/gpiochip0
    exit 0

     
    ну и после этого будет:
    Код (Text):

    crwxrwxrwx  1 root root  254,  0 May  3 18:54 gpiochip0
     
    а было:
    Код (Text):

    crw-------  1 root root  254,  0 May  3 18:54 gpiochip0
     
    Одним словом теперь к нему обращаться можно всем.
    Как Вы обратили внимание там пользователь root и группа root.
    С SPI несколько по другому... там
    crw-rw---- 1 root spi 153, 0 май 5 00:17 spidev0.0
    Второй вариант это добавить пользователя в группу... допустим spi, i2c. Только для GPIO группа root. Смотрите сами.