Ubuntuでライン入力の音声をそのまま再生する

PCのライン入力端子やマイク入力端子からの音声をそのまま再生する方法です。
Ubuntu 16.04で確認しましたが、PulseAudioを採用したディストリビューションなら同じ方法でできるはずです。

簡単な方法

$ pactl load-module module-loopback

これだけでライン入力の音声がそのまま再生されるはずです。
上記コマンドのload-moduleunload-moduleに置き換えると再生は止まります。

遅延が少ない方法

上記の方法では数百ミリ秒ほど遅延が発生します。
pacatという入出力の音声データを生で扱えるコマンドをパイプでつなぐことで遅延を少なくすることができます。
まずは以下のコマンドを実行します。

$ pactl info

以下のコマンドの<入力デバイス名>と<再生デバイス名>を、上記のコマンドの実行結果のDefault Sink(再生デバイス名)とDefault Source(入力デバイス名)で置き換えて実行します。

$ pacat -r --latency-msec=1 -d <入力デバイス名> | pacat -p --latency-msec=1 -d <再生デバイス名>

参考

Fix PulseAudio loopback delay – The Linux Experiment

Outlook.comのメールはゴミ箱から削除しても簡単に復元できる

Microsoftの無料メールサービス「Outlook.com」はゴミ箱(削除済みアイテム)から削除しても、ブラウザで「Outlook.com」にログインして「削除済みアイテムを復元」から簡単に削除したメールを復元できます。
スマートフォンの「Outlook」アプリでのみ「Outlook.com」を利用している人などはこの機能に気づかないと思うので、この仕様は問題だと思います。

完全に削除する方法

↓「Outlook.com」にログインして「削除済みアイテム」→「削除済みアイテムを復元」をクリック。

↓ゴミ箱(削除済みアイテム)から削除したメールが出てくるので、チェックボックスをオン(Shiftキーで一括選択可)にして削除します。

A1規格対応のmicroSDをRaspberry Pi Zeroで使ってみた

Raspbianの起動やパッケージのインストールが早くなることを期待して、SanDiskのA1規格対応microSD(SDSQUAR-016G-GN6MA)を買いました。
かなり前に買ったUHS-1準拠の16GB microSD(以下、普通のmicroSD)と起動時間などを比較してみようと思います。

A1クラスって何?

A1(Application Performance Class 1)はSD AssociationがSD 5.1 Specificationsで追加した以下の基準を満たすSDカードの規格です。

  • 1500 IOPSの読み込み
  • 500 IOPSの書き込み
  • 10MB/sのシーケンシャル

最新のSD 6.0 SpecificationsではA2規格も追加されたようです。

CrystalDiskMarkの結果

MacBook Pro Early 2015のSDカードスロットでの結果です。
↓SanDisk A1

↓普通のmicroSD

4Kのランダムライトが2倍以上出ていますが、ランダムリードは残念なことに同じです。

Raspbianの起動時間

2017-09-07版のRaspbian Stretchを特にチューニングしたりせずRaspberry Pi Zeroで起動した結果です。

  • SanDisk A1 : 33秒
  • 普通のmicroSD : 33秒

Raspberry Piはリードが最大20MB/s位なので当然の結果ですね。

パッケージのインストール時間

以下のコマンドを実行した時の結果です。

sudo apt install -d raspberrypi-ui-mods
time sudo apt install -y raspberrypi-ui-mods && sync
  • SanDisk A1 : 10分28秒
  • 普通のmicroSD : 13分42秒

わざわざ割高なA1クラスを買うほどでもないですね。

Ubuntu 16.04でCPUとGPUの両方に負荷をかける


LuxRenderというオープンソースの3Dレンダリングエンジンを使用し、ベンチマークやストレステストができるLuxMarkというソフトがあります。
LuxMarkはOpenCLが使える環境が必要です。
以下は、CPUとGPUがともにIntelの場合のOpenCLドライバーのインストール方法です。

試した環境

  • OS : Ubuntu 16.04
  • CPU : Intel Pentium G4400
  • GPU : Intel HD Graphics 510

CPUとGPUでOpenCLが使えるか確認する

まず、OpenCLが使えるかどうかclinfoを使って確認します。

sudo apt install clinfo

コマンドを実行して、以下のようにCPUとGPUが表示されない場合はOpenCLドライバーをインストールしないとLuxMarkは使えません。

$ clinfo
〜省略〜
Number of devices    2
  Device Name        Intel(R) HD Graphics
〜省略〜
  Device Name        Intel(R) Pentium(R) CPU G4400 @ 3.30GHz

CPUとGPUでOpenCLが使えるようにする

IntelのホームページからLinux用のOpenCLドライバをダウンロードして展開します。
rpmパッケージをdebパッケージに変換してインストールします。

$ sudo apt install alien
$ sudo alien -ci intel-opencl-cpu-r5.0-63503.x86_64.rpm
$ sudo alien -ci intel-opencl-r5.0-63503.x86_64.rpm

確認

clinfoコマンドでCPUとGPUが表示されることを確認します。

LuxMarkのダウンロード

freeglut3が必要なのでインストールします。

$ sudo apt install freeglut3

公式Wikiからバイナリをダウンロードして展開します。
luxmarkを実行します。

ストレステストの実行

起動したら、[Mode]→[Stress Test (OpenCL CPUs+GPUs)]をクリックしてストレステストを開始します。

参考

Ubuntu 16.04でサウンド出力をモノラルにする

PulseAudioの仮想シンクを作成してモノラル出力する方法です。

環境

  • OS : Ubuntu 16.04

前準備

普通に音楽などを再生してシステムの音量(プレーヤーの音量ではない)を聞くことのできる限界まで上げてください。

PulseAudioの設定

    以下のコマンドを実行して、デフォルトシンク名(出力先)をコピーしておきます。

    $ pacmd stat | grep "Default sink name:"
    Default sink name: alsa_output.pci-0000_00_1f.3.analog-stereo
    


    以下のコマンドで仮想シンクを作成します。<デフォルトシンク名>を前のコマンドで取得したもので置き換えてください。

    $ pacmd load-module module-remap-sink master=<デフォルトシンク名> sink_name=mono channels=2 channel_map=mono,mono

    確認

    • [システム設定]→[サウンド]でサウンドの出力先を仮想シンク(多分、「Remapped 内部オーディオ アナログステレオ」)に設定します。
    • こういう動画とかを再生して、モノラルになっているか確認します。

    設定の永続化

    作成した仮想シンクは再起動すると消えてしまうので、設定ファイルに書き込みます。
    /etc/pulse/default.paに以下の設定を書き込みます。

    load-module module-remap-sink master=<デフォルトシンク名> sink_name=mono channels=2 channel_map=mono,mono
    set-default-sink mono

    参考

Intel Atom端末で起動できるFedora 26 Live USBを簡単に作る

Intel Atom(Bay Trail、Cherry Trail)搭載のWindowsタブレットなどでLinuxを起動しようと思っても、UEFIが32bitのため、普通にLive USBを作っただけでは起動できません。
また、Kernel 4.10以下ではC-Stateに起因するバグによりランダムにフリーズします。

本当はUbuntuのLive USBを作りたかったのですが最新のUbuntu 17.04でもKernel 4.10なため、Kernel 4.12なFedora 26のLive USBを作ってみようと思います。
※Fedora 27では32bit UEFIに標準で対応するようです。

作り方

  1. 公式のFedora 26 Workstation 64bit 1.5GB(Fedora-Workstation-Live-x86_64-26-1.5.iso)のISOイメージをダウンロードします。
  2. ddコマンドなどでISOファイルをそのままUSBメモリーに書き込みます。
  3. USBメモリーに書き込み終わったら、2番目のパーティションをマウントします。
  4. ここなどからi686用のgrub2-efiのRPMパッケージをダウンロードします。
  5. RPMパッケージを解凍してboot/efi/EFI/fedora/grubia32.efiをマウントしたパーティションに EFI/BOOT/bootia32.efiとしてコピーします。
  6. ※空き容量が足りないのでMokManager.efiとかを削除します。
    ※ファイル名がgrubia32.efiのままだと多分、殆どの端末で起動しません。

以上で出来上がりです。

Ubuntu 16.04の「ファイル」でSMBv2以上のサーバーをマウントする

Ubuntuで「ファイル(Nautilus)」の「サーバーへ接続」からマウントするとき、サーバー側でSMBv1を無効にしているとエラーが出て接続できません。

Oops! Something went wrong.
Unhandled error message: Failed to mount Windows share: Connection timed out
うわっ! 何か問題が発生しました。
扱えないエラーメッセージ: Windows 共有をマウントできませんでした: 接続がタイムアウトしました

デフォルトではSMBv1より新しいバージョンでは接続できないので設定ファイルを作成します。
以下の内容を/etc/samba/smb.confに作成します。

[global]
client max protocol = SMB2

ただ、この設定をするとネットワーク上のサーバーをスキャンできなくなるみたいです。

参考