GNU/Linux >> Belajar Linux >  >> Debian

Raspberry Pi:Menghidupkan dan mematikan TV yang terhubung melalui HDMI-CEC

Dengan bantuan cec-client (bagian dari libcec) Raspberry Pi Anda dapat mengontrol perangkat yang mendukung CEC, seperti B. TV yang terhubung melalui HDMI. Anda dapat menyalakan atau mematikan TV, mengaktifkan sumber aktif, dan banyak lagi.

Ini harus bekerja dengan versi atau model Raspberry Pi apa pun, termasuk Raspberry Pi asli serta Raspberry Pi 4.

Kasus penggunaan yang mungkin untuk ini adalah menghubungkan ke Raspberry Pi melalui SSH dan mengirim perintah untuk menghidupkan atau mematikan TV yang terhubung melalui HDMI-CEC. Atau Anda dapat menggunakan perintah untuk menyalakan TV dan menjadikan adaptor CEC sebagai sumber aktif di sumber HDMI Raspberry Pi. Saya yakin Anda dapat memikirkan berbagai kasus penggunaan lainnya.

CHECK, atau Consumer Electronics Control, adalah fungsi HDMI yang memungkinkan perangkat yang terhubung melalui HDMI dikontrol dengan remote control. Misalnya, CEC digunakan untuk menggunakan tombol putar/jeda pada remote control untuk mengontrol pemutaran pada perangkat yang terhubung melalui HDMI. Atau saat Anda memutar video di Chromecast saat TV mati dan TV otomatis menyala dan beralih ke sumber Chromecast.

Sebagian besar televisi dan penerima AV modern harus mendukung HDMI-CEC. Namun, perhatikan bahwa beberapa model mungkin mengharuskan Anda untuk mengaktifkan CEC di pengaturan TV. CEC dapat memiliki nama yang berbeda tergantung pada merek perangkat. Misalnya, disebut Anynet + untuk televisi Samsung, EasyLink atau Fun-Link untuk Philips, SimpLink untuk LG dan sebagainya.

Agar dapat menghidupkan (dan mematikan) televisi yang terhubung ke Raspberry Pi melalui HDMI, langkah pertama adalah menginstal cec-client. Pada Raspbian atau distribusi Linux berbasis Debian atau Ubuntu lainnya untuk Raspberry Pi, instal cec-utils itu paket (cec-client adalah bagian dari paket ini):

sudo apt install cec-utils

Pada distribusi Linux lainnya, Anda harus mencari cec-client atau cec-utils di repositori atau buat libcec Dari sumbernya.

Nah itu cec-utils terinstal, mari Pindai bus CEC untuk perangkat yang tersedia:

echo 'scan' | cec-client -s -d 1

Dalam perintah ini echo 'scan' mengirimkan perintah scan ke cec-client, -s digunakan untuk cec-client untuk menjalankan satu perintah dan ada, dan -d 1 menyetel level log ke 1 (hanya kesalahan) sehingga terminal Anda tidak terkontaminasi dengan informasi yang tidak berguna.

Catat nomor perangkat dan alamat TV (atau perangkat lain yang terhubung ke Raspberry Pi Anda melalui HDMI-CEC) karena kami akan menggunakannya nanti.

Ini adalah contoh menjalankan perintah ini di Raspberry Pi saya yang terhubung ke TV Samsung melalui HDMI (dengan dukungan CEC):

$ echo 'scan' | cec-client -s -d 1
opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address:       0.0.0.0
active source: no
vendor:        Samsung
osd string:    TV
CEC version:   1.4
power status:  on
language:      eng
device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng
currently active source: unknown (-1)


Dalam contoh ini nomor perangkat 0 dengan 0.0.0.0 Alamat adalah Samsung TV dan nomor perangkat saya 1 dengan 1.0.0.0 Alamat adalah perangkat Raspberry Pi saya.

Sekarang setelah kami mengetahui nomor dan alamat perangkat, Anda dapat Menggunakan perintah berikut untuk menyalakan TV yang terhubung ke Raspberry Pi melalui HDMI-CEC:

echo 'on <DEVICE #>' | cec-client -s -d 1

Atau:

echo 'on <DEVICE ADDRESS>' | cec-client -s -d 1

Kedua nomor perangkat (0 adalah TV Samsung pada contoh di atas) dan alamat perangkat (0.0.0.0 adalah alamat perangkat TV Samsung dari contoh saya) seharusnya berfungsi.

-d 1 adalah menjaga level log hanya pada kesalahan, dan Anda dapat menggunakan perintah tanpanya, tetapi Anda akan melihat log yang panjang dan mungkin tidak berguna.

Contoh:

echo 'on 0' | cec-client -s -d 1

Atau:

echo 'on 0.0.0.0' | cec-client -s -d 1

Anda juga menginginkannya as Perintah yang menjadikan adaptor CEC sebagai sumber aktif (Jadi TV beralih ke sumber HDMI Raspberry Pi setelah menyalakan TV):

echo 'as' | cec-client -s -d 1

Apakah Anda ingin mematikan TV (beralih ke mode siaga)? Gunakan:

echo 'standby <DEVICE #>' | cec-client -s -d 1

Tergantung pada bagaimana Anda menggunakannya, Anda mungkin juga perlu memeriksa status TV saat ini (apakah menyala atau dalam keadaan siaga?). Hal ini dimungkinkan dengan:

echo 'pow <DEVICE #>' | cec-client -s -d 1

Untuk melihat semua perintah yang cec-client dapat kirim ke perangkat yang terhubung melalui HDMI-CEC, gunakan echo h | cec-client -s -d 1 :

Available commands:
[tx] {bytes}              transfer bytes over the CEC line.
[txn] {bytes}             transfer bytes but don't wait for transmission ACK.
[on] {address}            power on the device with the given logical address.
[standby] {address}       put the device with the given address in standby mode.
[la] {logical address}    change the logical address of the CEC adapter.
[p] {device} {port}       change the HDMI port number of the CEC adapter.
[pa] {physical address}   change the physical address of the CEC adapter.
[as]                      make the CEC adapter the active source.
[is]                      mark the CEC adapter as inactive source.
[osd] {addr} {string}     set OSD message on the specified device.
[ver] {addr}              get the CEC version of the specified device.
[ven] {addr}              get the vendor ID of the specified device.
[lang] {addr}             get the menu language of the specified device.
[pow] {addr}              get the power status of the specified device.
[name] {addr}             get the OSD name of the specified device.
[poll] {addr}             poll the specified device.
[lad]                     lists active devices on the bus
[ad] {addr}               checks whether the specified device is active.
[at] {type}               checks whether the specified device type is active.
[sp] {addr}               makes the specified physical address active.
[spl] {addr}              makes the specified logical address active.
[volup]                   send a volume up command to the amp if present
[voldown]                 send a volume down command to the amp if present
[mute]                    send a mute/unmute command to the amp if present
[self]                    show the list of addresses controlled by libCEC
[scan]                    scan the CEC bus and display device info
[mon] {1|0}               enable or disable CEC bus monitoring.
[log] {1 - 31}            change the log level. see cectypes.h for values.
[ping]                    send a ping command to the CEC adapter.
[bl]                      to let the adapter enter the bootloader, to upgrade
the flash rom.
[r]                       reconnect to the CEC adapter.
[h] or [help]             show this help.
[q] or [quit]             to quit the CEC test client and switch off all
connected CEC devices.


Debian
  1. Instal SoftHSM dan Akses melalui Program Java

  2. Linux USB:menyalakan dan mematikan daya?

  3. Nonaktifkan TCP-Offloading {sepenuhnya, umum dan mudah}

  1. Cara Mengubah Izin dan Pemilik melalui Command Line

  2. Nonaktifkan dan Matikan Telnet di Linux

  3. LibreOffice 7.0 Dirilis – Instal Melalui PPA di Ubuntu dan Mint

  1. Raspberry Pi Firewall:Cara Menginstal dan Mengelolanya dengan Menggunakan UFW

  2. Raspberry Pi 4 dan Kali

  3. Cara memindahkan semua file dan folder melalui perintah mv