Eu posso responder isso.
sudo chown root.gpio /dev/mem
Isso altera o proprietário e o grupo de /dev/mempara roote gpiorespectivamente.
sudo chmod g+rw /dev/mem
depois, fornece ao grupo acesso de gravação e leitura a esse /dev/memobjeto.
O /dev/memobjeto é basicamente todo o espaço da memória no sistema. Isso significa que agora o grupo gpio, e todos os que estão nele, podem ler e escrever no espaço da memória.
Agora, no espaço da memória há muitas coisas, incluindo registros da CPU. Ao alternar os pinos GPIO, você está alterando um pouco em um desses registros. O problema é que você precisa ter certeza de que faz isso corretamente ou que coisas ruins e ruins podem acontecer ao seu sistema.
Para ajudar a proteger todo o espaço da memória, os poderes que são mapeados apenas as partes da memória nas quais precisamos trabalhar com os bits GPIO /dev/gpiomem. Com efeito, isso oculta / impede o acesso ao restante do espaço da memória e permite apenas o acesso aos bits GPIO. Isso permite o acesso aos endereços de memória GPIO e não permite outras partes da memória, como a memória atualmente sendo usada por outros programas.
Com efeito, isso abre um buraco nas proteções de segurança e estabilidade do sistema para permitir o acesso ao material GPIO, bem como ao restante da memória, mas apenas aos usuários do grupo GPIO, do qual Pi é membro.
No futuro, drivers como a bcm2835biblioteca wiringPiserão atualizados mais (algumas atualizações já estão acontecendo) e os aplicativos criados sobre essas ferramentas serão atualizados ainda mais e, no futuro, esperamos que todo esse problema GPIO como root desaparecer.
Até então, você tem duas opções, abra o /dev/memgrupo gpiocomo leitura / gravação ou execute como raiz, que possui gravação de leitura completa para todos /dev/mem.
Espero que isso faça sentido.
No momento, ainda existem muitos problemas nos quais você ainda precisa executar root. Por exemplo, usando o node-red-contrib-dht-sensormódulo, que depende do node-dht-sensor, que depende do BCM2835. Ele falha com o uso /dev/gpiomem, pois ainda existem alguns bugs, dentro node-dht-sensorou dentro, /dev/gpiomemou da maneira como eles estão trabalhando juntos. Não sei qual é o caso, mas será resolvido eventualmente. Quando o BCM2835 é executado como 'não raiz' e /dev/gpiomemexiste, ele tenta usar em /dev/gpiomemvez de /dev/mem, portanto, abrir o /dev/memgrupo para gpionão ajuda. Vadio.