그래서 나는 주위를 둘러보았고 /dev/ttyS0
햄 /dev/ttyUSB0
라디오 액세서리를 작동시키려고 노력하면서 그것을 깨뜨렸습니다. ttyS0
무선 전송을 제어하고 /dev/ttyS0
일반 사용자로 cat을 실행하면 무선이 전송됩니다.
그런데 라디오에 사용하던 모뎀 소프트웨어(FLdigi)를 실행하면 ttys0
작동하지 않습니다. 프로그램을 시작하면 로그에 "직렬 포트 테스트 실패"라는 메시지가 나타납니다. 나는 "dialout"과 "uucp" 그룹 모두에 속해 있으므로 이것이 효과가 있을 것이라고 생각합니다.
달리기에 관해 내가 기억하는 것 중 하나는 입니다 sudo chmod 777 /dev/ttyS0
. 무엇으로 다시 설정해야 할지 잘 모르겠습니다. 동일한 사용자가 액세스할 수 있는데 실행 중인 소프트웨어가 액세스할 수 없는 이유에 대한 아이디어가 있습니까?
답변1
포트를 사용하려면 해당 포트가 열려 있는 애플리케이션이 없는지 확인하세요.
커널 로그에 메시지가 없는지 확인합니다( 를 사용하여
dmesg
).애플리케이션에서 정확히 무슨 일이 일어나고 있는지 확인하세요. 애플리케이션을 실행하면
strace
애플리케이션에서 수행된 시스템 호출이 보고됩니다. 다음과 같은 것을 사용하고 싶을 수도 있습니다:$ strace -f -s 512 -o /path/to/application.log.strace application ...
strace
이는 또한 최대 512번째 바이트까지 문자열을 기록하는 하위 프로세스가 되며 , 모두 /path/to/application.log.strace
애플리케이션에 대한 가능한 인수를 나타내는 타원으로 끝납니다. PID(매개변수)로 식별되는 실행 중인 프로세스 strace
에 연결하도록 지시할 수도 있습니다 . 자세한 내용은 매뉴얼 페이지를 -p
참조하십시오 . strace(1)
로그 끝에서 write()
오류 메시지를 인쇄하는 호출을 찾을 수 있습니다. 것이 가능하다비교적이 직전에 open()
or write()
(장치 파일에서)는 -1을 반환합니다. 이를 통해 오류의 원인이 무엇인지 알 수 있습니다.
권한에 대한 참고 사항: chmod 777
파일을 실행 가능하게 만들기 때문에 사용하고 싶지 않습니다. 이는 실행 파일 및 디렉터리 이외의 다른 것에는 좋은 생각이 아닙니다. 장치 파일의 경우(특성에 따라) 합리적인 값은 0640 또는 0660입니다. 이는 루트에 대한 전체 액세스와 그룹에 대한 읽기 또는 읽기-쓰기 액세스를 허용합니다(해당 사용자는 액세스 권한을 얻으려면 그룹의 구성원이어야 합니다. 귀하의 경우) 이것은 아마도 dialout
귀하가 언급한 그룹일 것입니다).
대부분의 경우 앞에 0을 추가하는 것이 좋습니다(예: chmod 0664
이렇게 하면 suid 비트가 제거되어 결과가대개좋은 생각입니다).