LINUXでHDMI経由での音声が出ない

LinuxHDMI経由で音が出ない場合のTipsです。エラーが出ず、動いているはずなのになぜか音が出ない症状で困っていました。

環境:Intel haswell内蔵GPU, Linux kernel 5.4.80

結論。/etc/pulse/daemon.confを修正する。

;(セミコロン)はコメント行ですので、設定値を反映させる場合は外します。

修正前

.
.
.
; default-sample-format = s16le
; default-sample-rate = 44100
.
.
.

修正後

.
.
.
default-sample-format = s24le
default-sample-rate = 48000    
.
.
.

修正後はpulseaudio を再起動します。

$ pulseaudio -k

今どきALSAもないでしょうし、同じ症状でお困りの場合はお試しを。

(実はdefault-sample-rate = 48000 はなくても動作しました。しかし参考にしたBBSではこちらのほうが有効だという記事もあったので参考までに。

ところでHDMIの規格では次のようになっています。

If an HDMI Source supports any HDMI audio transmission, then it shall support 2 channel L-PCM using an IEC 60958 Subpacket structure, with either 32kHz, 44.1kHz or 48kHz sampling rate and a sample size of 16 bits or more. 
 

 ここを読む限り16bit 44.1kHzでも動作するはずなので、、動かない原因は不明です。GPU側のドライバの問題でしょうか…

Gentoo LinuxでApple Magic Trackpadを使う

Synapticsドライバーをxorgに設定する説明はいくつか公開されています。

しかし、カーネルドライバが有効でないと、InputDeviceとして認識されません。(実際には下記以外にBluetooth, Synapticsドライバ等の設定が必要です)

Device Drivers -->
    HID support -->
     Special HID drivers -->
     <*> Apple Magic Mouse/Trackpad multi-touch support

InputDeviceとして認識されているかは # lsinputで確認できます。コマンドがインストールされていない場合は sys-apps/input-utilsをインストールしましょう。

Firefox+Flashプラグインの音を出力する GentooLinux

Flashプラグインからの音声出力はALSAへ出力されるため、PluseAudioの環境では扱うことができません。

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PerfectSetup/

/etc/asound.conf または ~/.asoundrcを編集します。

pcm.!default {
type pulse 
# If defaults.namehint.showall is set to off in alsa.conf, then this is 
# necessary to make this pcm show up in the list returned by 
# snd_device_name_hint or aplay -L
hint.description "Default Audio Device"
}
ctl.!default {
type pulse
}

ALSAのデバイスのひとつとしてPulse仮想デバイスへ出力されるため、Pulse側でコントロールできるようになります。

USEフラグalsa alsa-pluginをつけてpulseaudioをインストールしたら、この辺の設定ファイルを変えておいてくれても良さそうなのですが、そうはなってないですね。

Gentooの方針的には設定ファイルを親切に変えないのでしょうね。まあ、最終的には何とかなるのがGentooらしいとは言えるかもしれません。

と言うか、この問題は、ALSAを直接たたくflashがダメなのです。さらに言うと、もうすぐChromeFlashをサポートしなくなりますし、Flashにたよるサイトも消えて欲しいですね。

MacからLinuxに接続されたプリンタに出力する

Linuxの印刷といえばCUPSですが、はまると解決が難しいのが困りものです。さて、今回は、LinuxマシンにUSB接続されたプリンタをネットワークプリンタとして使う場合のメモです。特にMacをクライアントとして印刷設定する場合をとりあげます。CUPS自体の導入は今回は説明しません。

1. CUPSにプリンタを追加します。
ブラウザでlocalhost:631を開いて、プリンタを追加しますが、ドライバはプリンタ固有のものでなく、rawを選択します。ここで、プリンタ名をメモしておきましょう。

2.Mac側の設定。

MacOSX El Capitanで行いました。

環境設定から、プリンタを(+)追加します。

f:id:asamikei:20160828220824j:plain

アドレスは、Linux機のIPアドレスにCUPSのポートを追加(:631)して設定します。

プロトコルはIPPを選びます。キューの項目はprinters/に続けて、さきほど設定したときのプリンタ名を設定します。名前、場所はお好みの名前にしてください。ドライバは、設置したプリンタのドライバにします。問題がなければ、追加ボタンでプリンタが設定されます。

印刷 - Gentoo Wiki

 

 

(感謝:下記サイトを参考にさせていただきました。Macの情報少なくて困っていました。感謝です)

MacからIPP(CUPS)経由のプリンタを追加する方法 - 病みつきエンジニアブログ

 

GentooLinuxでfancontrolとサスペンド

GentooLinuxマシンのOSからファン回転数を制御をするfancontrolについての話題です。今回はその導入法は省略します。さて。温度によってファンの回転数を増減させるのには成功しました。しかし、問題が発生。

サスペンド状態にした後スリープから復帰させると、ファン速度が最大になってしまいます。これはよろしくないことです。

linux#>/etc/init.d/fancontrol restart

とrootでサービスを再起動すると元に戻りますが、毎回コレをするのは面倒です。どうなっているのでしょう。

設定で回避できそうな項目もないために、ググって情報を探すと、同様な事象が見つかりました。

http://askubuntu.com/questions/531882/high-fan-speed-after-suspend

http://efod.se/blog/archive/2013/03/02/fancontrol-not-working-after-resume

まあ、素朴というか、対処療法的ですが、サスペンドからの復帰時にサービスを再起動するというのが現状での解決策なようです。 ()

1.

linux#> vim /etc/pm/sleep.d/10_fancontrol 

を適当なエディタで作ります。内容は以下の通り。

 

#!/bin/sh
case "$1" in
resume)
    exec service fancontrol restart;;
esac

 上記で復帰時にエラーになる場合があるので、下記のように休止時にサービスを停止する方が良いようです。カーネルバージョンによるかもしれません。(2017/12/21追記)

 #!/bin/sh
case "$1" in
resume | thaw)
    exec /etc/init.d/fancontrol  start;;
hibernate | suspend)
    exec /etc/init.d/fancontrol stop;;

esac

2.このファイルに実行権限をつけます。

linux#>chmod +x /etc/pm/sleep.d/10_fancontrol

これで、サスペンド後にもfancontrolが正常に動作します(というか再起動する)。ubuntuユーザさんのページでしたが、参考になりました。なお、最近のubuntuもsystemdになってしまいましたので、systemd な人はディレクトリと内容が異なります(サスペンドを管理しているプログラムがpm-utilsでないと思われるため)のでご留意ください。(上記サイトによれば、/lib/systemd/system-sleep

#!/bin/bash
case "$1" in
post)
  exec service fancontrol restart;;
esac

とのことですが、当方では未検証)