Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Phần mềm Jack ALSA Jack¶
Giới thiệu đơn giản về Jack tiêm¶
Ở đây jack cắm có nghĩa là người dùng có thể chèn các sự kiện plugin hoặc plugout đến giắc âm thanh thông qua giao diện debugfs, sẽ rất hữu ích khi xác thực các thay đổi không gian người dùng ALSA. Ví dụ: chúng tôi thay đổi âm thanh mã chuyển đổi cấu hình trong Pulseaudio và chúng tôi muốn xác minh xem thay đổi hoạt động như mong đợi và nếu thay đổi gây ra hồi quy, trong trường hợp này, chúng tôi có thể đưa các sự kiện plugin hoặc plugin vào âm thanh hoặc một số giắc âm thanh, chúng ta không cần truy cập vật lý vào máy và cắm/rút phích cắm các thiết bị vật lý vào giắc âm thanh.
Trong thiết kế này, giắc âm thanh không bằng giắc âm thanh vật lý. Đôi khi giắc âm thanh vật lý có nhiều chức năng và Trình điều khiển ALSA tạo nhiều ZZ0000ZZ cho ZZ0001ZZ, đây là ZZ0002ZZ đại diện cho giắc âm thanh vật lý và ZZ0003ZZ đại diện cho một chức năng, ví dụ một jack vật lý có hai chức năng: tai nghe và mic_in, driver ALSA ASoC sẽ build 2 ZZ0004ZZ cho giắc cắm này. Việc chèn jack được thực hiện dựa trên ZZ0005ZZ thay vì ZZ0006ZZ.
Để đưa các sự kiện vào giắc âm thanh, chúng ta cần kích hoạt tính năng chèn giắc cắm thông qua ZZ0000ZZ trước, sau khi được bật, giắc cắm này sẽ không thay đổi trạng thái bằng các sự kiện phần cứng nữa, chúng ta có thể thêm plugin hoặc sự kiện cắm qua ZZ0001ZZ và kiểm tra trạng thái giắc cắm qua ZZ0002ZZ, sau khi hoàn thành quá trình kiểm tra, chúng ta cần tắt giắc cắm cũng được tiêm qua ZZ0003ZZ, khi nó bị vô hiệu hóa, giắc cắm trạng thái sẽ được khôi phục theo các sự kiện phần cứng được báo cáo gần đây nhất và sẽ thay đổi bởi các sự kiện phần cứng trong tương lai.
Bố cục của giao diện Jack tiêm¶
Nếu người dùng kích hoạt SND_JACK_INJECTION_DEBUG trong kernel, âm thanh Giao diện chèn jack sẽ được tạo như sau: :::::::::::::::::::::::::::::::::::::::
$debugfs_mount_dir/âm thanh
- ZZ0000ZZ-- HDMI_DP_pcm_9_Jack
ZZ0001ZZ-- jackin_inject ZZ0002ZZ-- kctl_id ZZ0003ZZ-- mặt nạ_bits ZZ0004ZZ-- trạng thái ZZ0005ZZ-- sw_inject_enable ZZ0006ZZ-- loại |-- thẻ1
|-- HDMI_DP_pcm_5_Jack ZZ0007ZZ-- jackin_inject ZZ0008ZZ-- kctl_id ZZ0009ZZ-- mặt nạ_bits ZZ0010ZZ-- trạng thái ZZ0011ZZ-- sw_inject_enable ZZ0012ZZ-- loại ...
- |-- Jack cắm tai nghe
ZZ0000ZZ-- jackin_inject ZZ0001ZZ-- kctl_id ZZ0002ZZ-- mặt nạ_bits ZZ0003ZZ-- trạng thái ZZ0004ZZ-- sw_inject_enable ZZ0005ZZ-- loại |-- Tai nghe_Mic_Jack
Giải thích về các nút¶
- kctl_id
chỉ đọc, lấy id của jack_kctl->kctl
- âm thanh/card1/Tai nghe_Jack# cat kctl_id
Giắc cắm tai nghe
- mặt nạ_bit
chỉ đọc, nhận các sự kiện được hỗ trợ của jack_kctl Mask_bits
- âm thanh/card1/Tai nghe_Jack# cat mặt nạ_bits
0x0001 HEADPHONE(0x0001)
- trạng thái
chỉ đọc, nhận trạng thái hiện tại của jack_kctl
tai nghe đã được rút ra:
- trạng thái âm thanh/card1/Tai nghe_Jack# cat
Đã rút phích cắm
cắm tai nghe:
- trạng thái âm thanh/card1/Tai nghe_Jack# cat
Đã cắm
- loại
chỉ đọc, nhận các sự kiện được hỗ trợ của snd_jack từ loại (tất cả các sự kiện được hỗ trợ trên giắc âm thanh vật lý)
- âm thanh/card1/Headphone_Jack# cat loại
0x7803 HEADPHONE(0x0001) MICROPHONE(0x0002) BTN_3(0x0800) BTN_2(0x1000) BTN_1(0x2000) BTN_0(0x4000)
- sw_inject_enable
đọc-ghi, bật hoặc tắt tính năng tiêm
tính năng tiêm bị vô hiệu hóa:
- âm thanh/card1/Tai nghe_Jack# cat sw_inject_enable
Jack: Jack cắm tai nghe đã bật: 0
kích hoạt tiêm:
- âm thanh/card1/Tai nghe_Jack# cat sw_inject_enable
Giắc cắm: Giắc cắm tai nghe Đã bật: 1
để kích hoạt tính năng chèn jack:
âm thanh/card1/Headphone_Jack# echo 1 > sw_inject_enable
để vô hiệu hóa việc tiêm jack:
âm thanh/card1/Headphone_Jack# echo 0 > sw_inject_enable
- jackin_inject
chỉ ghi, thêm plugin hoặc plug-in
để tiêm plugin:
âm thanh/card1/Headphone_Jack# echo 1 > jackin_inject
để chèn phích cắm:
âm thanh/card1/Headphone_Jack# echo 0 > jackin_inject