오디오 케이블이 연결되어 있는지 어떻게 감지하나요?

오디오 케이블이 연결되어 있는지 어떻게 감지하나요?

저는 Ubuntu Lucid(10.04)를 사용하고 있습니다. 루트로 실행되는 셸 스크립트에서 오디오 케이블(아날로그 잭)이 노트북에 연결되어 있는지 감지하고 싶습니다. 어떻게 해야 하나요? 휴대용 솔루션은 필요하지 않습니다. 아무리 구식이라도 랩탑에서 실행할 수 있는 것이 필요합니다.

답변1

한 가지 방법은 을 사용하는 것입니다 amixer.

Jack이 다음을 삽입했습니다.

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=on
...

잭이 연결되지 않음:

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=off
...

따라서 특정 항목에 대해 다음과 같이 할 수 있습니다.

amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
    c=1
} c && /: values/ {
   split($0, a, "=")
   print a[2];
   exit
}'

on또는 의 출력을 제공합니다 off.


iface명령을 사용하고 + 등 으로 지정할 수도 있습니다 name. 예를 들면 다음과 같습니다.

목록을 얻는 방법:

$ amixer -c 0 controls

어떤 -c 0카드가 지정되어 있는지, 기본값인 경우 필요하지 않거나 하나만 필요합니다. 예를 들면 다음과 같습니다.

$ amixer -c 0 cget numid=29,iface=CARD

$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'

나는 한때 Tcl/Tk를 사용하는 것으로 여겨지는 소프트웨어를 발견했는데, 이 소프트웨어는 다른 많은 하드웨어 정보와 함께 컴퓨터에 있는 모든 포트의 핀 전원을 표시했습니다. 그것은 훌륭한 소프트웨어이지만 더 이상 찾을 수 없습니다. 12개의 오래된 하드 드라이브를 검사했지만 성공하지 못했습니다. 일부 잭 포트를 디버깅하는 데 사용합니다. 그렇습니다. 특정 포트의 상태를 폴링하는 것은 절대적으로 가능합니다.

Jack은 온라인에서 검색하기 어렵습니다.. 이것은 이것을 거의 불가능하게 만듭니다.


사운드 카드 정보를 폴링하는 C 코드가 있습니다. 찾을 수 있는지 확인해야 합니다.

답변2

"아무리 해키더라도"라고 말씀하셨으니까요. . .

USB를 통해 노트북에 연결할 수 있는 외부 사운드 카드를 구입하세요. 아날로그 잭을 연결하십시오. 오디오 잭을 연결하려면 외부 사운드 카드를 연결하고 bash 스크립트가 외부 사운드 카드가 USB를 통해 연결되어 있는지 감지하도록 하십시오.

관련 정보