লিনাক্সে হেডফোন সংযোগ / সংযোগ সনাক্তকরণ


30

আমি যখন হেডফোনটি সিস্টেম থেকে সংযুক্ত বা সংযোগ বিচ্ছিন্ন হয় তখন আমি একটি সংকেত সনাক্ত করার চেষ্টা করছি। এই কাজ করতে সবচেয়ে ভালো উপায় কি?

ড্রাইভার সহ যদি একটি বিশেষ বোর্ড থাকে তবে তা আমার পছন্দসই উপায়।


আমি নিশ্চিত না যে আমি শেষ অংশটি বুঝতে পেরেছি - আপনি কি আপনার কম্পিউটারের সাথে কোনও অতিরিক্ত হার্ডওয়্যার সংযুক্ত করে এটি করার পরিকল্পনা করছেন?
rozcietrzewiacz

@rozcietrzewiacz - আমার কাছে একটি জাভা অ্যাপ্লিকেশন রয়েছে যা হেডফোনটি প্লাগ করা বা প্লাগযুক্ত করা থাকলে তা অবহিত হওয়া দরকার। এটাই আমার লক্ষ্য। অতিরিক্ত হার্ডওয়্যার ব্যবহার করে বা না করেই আমি কোনও পরামর্শ / সুপারিশের জন্য উন্মুক্ত।
ব্যবহারকারী775633

@Gilles - না, টিপিক্যাল হার্ডওয়্যার করে সফ্টওয়্যার প্রজ্ঞাপন প্রদান। আমি জানি এটি ইউ ও এল, তবে আপনি সম্ভবত ক্লাসিক বিরক্তিকর উইন্ডোজ বিজ্ঞপ্তির সাথে পরিচিত: "আপনি অডিও জ্যাকটিতে একটি ডিভাইস প্লাগ করেছেন!" i51.tinypic.com/2w2hogw.jpg । লিনাক্স, ধন্যবাদ, এটি করে না, তবে আপনার যে হার্ডওয়্যারটি পেয়েছে সেগুলি থেকে তথ্যটি পাওয়া উচিত। ওএস কীভাবে এই তথ্য উপলব্ধ করে তা প্রশ্ন The
কেভিন ভার্মির

@ কেভিন ভার্মির আমি এই বিশেষ উইন্ডোজ বিরক্তির সাথে পরিচিত হতে পারি না, না। জেনে রাখা ভাল যে আধুনিক হার্ডওয়্যারটি বিজ্ঞপ্তি দেয়, আপনাকে ধন্যবাদ। লিনাক্স সাধারণত তখন তথ্য সরবরাহ করে /sysএবং সম্ভবত ডিবিএসের মাধ্যমে বিজ্ঞপ্তি দেয়।
গিলস 15'30

এটি উইন্ডোজ সিস্টেমে নেই। এই সমস্যাটি লিনাক্স ওএসের জন্য। আমি আরও স্পষ্ট করা উচিত ছিল। দুঃখিত! যাইহোক, ডিফল্টরূপে দেখে মনে হয় যে এই বিজ্ঞপ্তিটি ফাঁদে ফেলার কোনও সহজ উপায় নেই That এজন্য আমি এমনকি এমন কোনও কাস্টম কার্ড রয়েছে যাতে কোনও ড্রাইভার আছে যা ট্র্যাপ করবে এবং এই সংকেতটি লিনাক্সে চলমান অ্যাপ্লিকেশনগুলির জন্য উপলব্ধ করবে কিনা তা সন্ধান করার কথা ভাবছি।
ব্যবহারকারী775633

উত্তর:


17

আমার লিনাক্সে (ডেবিয়ান জিএনইউ / লিনাক্স 3.12.0 x86_64) এটি এসপিআই সিস্টেমের মাধ্যমে acpi_listenজানা যায় তাই কলিং শোগুলি:

jack/microphone MICROPHONE plug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE unplug

এটি কার্নেল কনফিগারেশনের একটি নির্বাচিত বিকল্পের উপর নির্ভর করে বলে মনে হচ্ছে CONFIG_SND_HDA_INPUT_JACK

এটি যদি আপনার ক্ষেত্রে হয় তবে আপনি যে /etc/acpi/events/কোনও স্ট্রাইটিং চান তা ফায়ার করতে স্ক্রিপ্ট দিয়ে পপুলেট করতে পারেন।

এসিপিড ম্যান পৃষ্ঠা http://linux.die.net/man/8/acpid পরীক্ষা করুন


এটি আমার উবুন্টু 15.10 সিস্টেমে এইচডিএ ইন্টেল পিসিএইচ, ALC892 অ্যানালগ সহ পুরোপুরি কাজ করে যা আলসা রিপোর্ট করেছে। CONFIG_SND_HDA_INPUT_JACK = y সেট করা আছে।
কেভিনফ

14

এই তথ্য উপলব্ধ এবং /proc/asound/card0/codec#0হার্ডওয়্যার উপর নির্ভর করে। আমার কম্পিউটারের জন্য, এটি বিভাগে রয়েছে যা এই তথ্যটি ধারণ করে:

হেডফোন সংযুক্ত:

[...]
Node 0x0d [Pin Complex] wcaps 0x400181: Stereo
  Control: name="Speaker Phantom Jack", index=0, device=0
  Pincap 0x00000014: OUT Detect
  Pin Default 0x90170110: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0x1, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
[...]

হেডফোনটি সংযোগ বিচ্ছিন্ন হয়েছে (দেখুন Pin-ctls):

[...]
Node 0x0d [Pin Complex] wcaps 0x400181: Stereo
  Control: name="Speaker Phantom Jack", index=0, device=0
  Pincap 0x00000014: OUT Detect
  Pin Default 0x90170110: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0x1, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x40: OUT
[...]

আপনি ফাইলটি সংশোধন করে তথ্যটি গ্রেপ করে কিনা তা পরীক্ষা করতে ইনোটিফাই ব্যবহার করতে পারেন।

Https://askubuntu.com/questions/133809/mute-sound-on-headphone-unplug এও দেখুন ।


1
man inotifyবলেছেন সিউডো-এফ-এর মতো / প্রোক ইনোটিফাইয়ের সাথে পর্যবেক্ষণযোগ্য নয়। এখানে কি কাজ আছে?
বিবেক_জি

@ বিবেক_জি হ্যাঁ, ব্যবহার করুন acpi_listen( theশ্বরের উত্তর দেখুন)
ডন হ্যাচ

এর audio1পরিবর্তে আমাকে ব্যবহার করতে হয়েছিলaudio0 একটি একক সাউন্ড কার্ড সহ একটি সাধারণ নোটবুক থাকলেও এটি কাজ করার । সুতরাং এটি /proc/asound/card1/codec#0আমার জন্য, এটি আপনার জন্য অন্য একটি সংখ্যা হতে পারে।
হোইজুই

3

সিস্টেমে জ্যাকের udev ট্যাগার সন্ধান করুন, একটি ক্লায়েন্টকে সংযুক্ত করুন (ডিবিস-মনিটর) যা জ্যাক কানেক্ট এবং সংযোগ বিচ্ছিন্ন করার বার্তাগুলির জন্য ডিবিাস ব্যবহার করে বাসটি পর্যবেক্ষণ করে।


2

যদি আপনার কার্নেলের জ্যাক ইনপুটগুলি কনফিগার করা থাকে root@brix:~# grep CONFIG_SND_HDA_INPUT_JACK /boot/config-$(uname -r)

Evtestআপনি ব্যবহার করে আপনার সমস্ত ইনপুট ইভেন্টগুলি তালিকাভুক্ত করতে পারে।

root@brix:/etc/acpi# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Power Button
/dev/input/event1:  Power Button
/dev/input/event2:  Logitech Logitech BT Mini-Receiver
/dev/input/event3:  CM Storm QuickFire Rapid keyboard
/dev/input/event4:  CM Storm QuickFire Rapid keyboard
/dev/input/event5:  PixArt Microsoft USB Optical Mouse
/dev/input/event6:  Logitech Logitech BT Mini-Receiver
/dev/input/event7:  Video Bus
/dev/input/event8:  HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event9:  HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event10: HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event11: HDA Intel PCH Front Mic
/dev/input/event12: HDA Intel PCH Rear Mic
/dev/input/event13: HDA Intel PCH Line
/dev/input/event14: HDA Intel PCH Line Out
/dev/input/event15: HDA Intel PCH Front Headphone
Select the device event number [0-15]: 14
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "HDA Intel PCH Line Out"
Supported events:
  Event type 0 (EV_SYN)
  Event type 5 (EV_SW)
    Event code 6 (SW_LINEOUT_INSERT)
Properties:
Testing ... (interrupt to exit)
Event: time 1465927534.591787, type 5 (EV_SW), code 6 (SW_LINEOUT_INSERT), value 0
Event: time 1465927534.591787, -------------- EV_SYN ------------
Event: time 1465927536.618428, type 5 (EV_SW), code 6 (SW_LINEOUT_INSERT), value 1
Event: time 1465927536.618428, -------------- EV_SYN ------------

2

একটি সরঞ্জাম বলা হয় এইচডিএ-ক্রিয়া পিনগুলি ব্যবহার করে হেডফোন জ্যাকটিকে সক্ষম / অক্ষম করতে পারে।

উদাহরণ স্বরূপ,

হেডফোন জ্যাক সক্ষম করতে, ব্যবহার করুন:

./hda-verb /dev/snd/hwC0D0 0x0f SET_PIN_WIDGET_CONTROL 0x40

হেডফোন জ্যাকটি অক্ষম করতে, ব্যবহার করুন:

./hda-verb /dev/snd/hwC0D0 0x0f SET_PIN_WIDGET_CONTROL 0

যেহেতু আপনি কেবল এর স্থিতি পরীক্ষা করতে চান, সম্ভবত আপনি আপনার জাভা প্রোগ্রামে কিছু পোলিং ব্যবস্থা ব্যবহার করতে পারেন যা এইচডিএ ব্যবহার করে উপরের পিনের স্থিতি পরীক্ষা করতে পারে check এর জন্য, আপনার জাভা প্রোগ্রামটি এইচডিএ-ক্রিয়াতে কল করতে সক্ষম হবে। বিকল্পভাবে, আপনি এইচডিএ-ক্রিয়াটি উপলব্ধ হিসাবে উত্সটি পরীক্ষা করতে পারেন এবং তারা এটি কীভাবে করেছে তা দেখুন।


0

আমার ল্যাপটপে একটি কনক্স্যান্ট ইন্টেল এইচডিএ অডিও সিস্টেম রয়েছে, তবে মাইক এবং হেডফোন জ্যাক ভলিউম নিয়ন্ত্রণগুলি উপলব্ধ অনেকগুলি মিক্সারের মধ্যে কখনও দেখা যায় না এমনকি অ্যালসামিক্সারও। মাইক এবং হেডফোন স্পিকার কেবল চালু বা বন্ধ করা যেতে পারে। এটি করার জন্য এখানে একটি ছোট স্ক্রিপ্ট রয়েছে:

#!/bin/bash
#
# Switching on or off your headphone speaker and mic jacks
# and at the same time switching off or on your laptop front speakers.
# requires hda-verb-0.3-6-mdv2011.0.x86_64
#
# Before putting it in place make sure to test your PIN_WIDGET_CONTROL's
# with su -c 'python2 hda-analyzer.py' available here :
# http://www.alsa-project.org/hda-analyzer.py
#
PIN_CONFIGS=/sys/class/sound/hwC0D0/init_pin_configs
if [ ! -f $PIN_CONFIGS ]; then
    echo "Your kernel is missing CONFIG_SND_HDA_HWDEP=y"
    exit 0
fi
if [ ! -f /usr/sbin/hda-verb ]; then
    echo "This script requires hda-verb-0.3-6-mdv2011.0.x86_64"
    exit 0
fi
PINS_PRESENT=`cat $PIN_CONFIGS | awk '{print $1}'`
if [ `basename $0` = "speakers-off.sh" ]; then
# Headset (Mic (Node 0x1b) + Headphone Drive (Node 0x19)) : ON
# Laptop Speaker (Node 0x1f) : OFF
[ `echo "$PINS_PRESENT" | grep 0x19` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x19 SET_PIN_WIDGET_CONTROL 0x40
[ `echo "$PINS_PRESENT" | grep 0x1f` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x1f SET_PIN_WIDGET_CONTROL 0
[ `echo "$PINS_PRESENT" | grep 0x1b` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x1b SET_PIN_WIDGET_CONTROL 0x64
fi

if [ `basename $0` = "speakers-on.sh" ]; then
# Headset (Mic (Node 0x1b) + Headphone Drive (Node 0x19)) : OFF
# Laptop Speaker (Node 0x1f) : ON
[ `echo "$PINS_PRESENT" | grep 0x19` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x19 SET_PIN_WIDGET_CONTROL 0
[ `echo "$PINS_PRESENT" | grep 0x1f` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x1f SET_PIN_WIDGET_CONTROL 0x40
[ `echo "$PINS_PRESENT" | grep 0x1b` ] &&
   /usr/sbin/hda-verb /dev/snd/hwC0D0 0x1b SET_PIN_WIDGET_CONTROL 0x24
fi

exit 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.