2020-09-26

WZR-600DHPのスイッチングハブにVLANを設定

Buffalo製の無線LAN付ルーター WZR-600DHP に OpenWrt をインストールし、スイッチングハブにVLANを設定した。

機材など

WZR-600DHP

中古だと2000円くらいで売られているWZR-600DHPを使用した。 そのままではVLANは使用できないので、サードパーティのファームウェアをインストールする。

Open Wrt

使用したファームウェアは OpenWrt Chaos Calmer 15.05 / LuCI で、数年前にtftpでインストールしたと思う。

注意

ファームウェアを書き換えた機器は技適が有効かどうか微妙なので、伝播を発信する状態で使用するべきではない。

OpenWrt上でVLANの設定

ウェブ上で設定できるので、特に説明の必要は無いかもしれない。
  1. メニューのNetwork -> Switchからスイッチングハブの設定を開く。
  2. VLANを有効にする。
  3. VLANの設定を割り当てる。

    一般的に、各ポートのtagged/untaggedの割当には以下のような制約があるらしい。
    • 各ポートには、複数のtaggedを割り当てられる。
    • 各ポート毎に、untaggedは1個しか割り当てられず、その場合taggedは割り当てられない。
    • Taggedポートにタグ付きのパケットが届いた場合は、そのVLANが割り当てられていれば、タグで指定されたVLANへのパケットとして処理する。
    • Untaggedポートにタグ無しのパケットが届いた場合、割り当てられたVLANへのパケットとして処理する。
    • それ以外の場合は、パケットを破棄する。例えばtaggedポートにタグ無しのパケットが届いた場合など。
  4. あとは Save & Apply で設定を保存・有効にするだけ。
Linuxマシンは8021qモジュールでVLANを使用できる。以下に設定方法についての記事をいくつか載せる。
  1. 802.1q VLAN タグのセットアップ
  2. Ubuntuを複数VLAN/SSID吹けるAPにしてみる

2020-08-30

Kdenlive 20をScientific Linux 7上でビルド

EL7でKdenlive 20をビルドするメモ。

FFmpegをビルド・インストール

mkdir b
cd b
../configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --arch=x86_64 --enable-libmp3lame --enable-pic --enable-libfreetype --enable-shared --enable-libxcb --enable-libmfx --enable-vaapi --disable-nvenc --enable-libpulse --enable-libx264 --enable-libx265
make -j8 && sudo make install

SCLのdevtoolset-9をインストール

Meltをビルド・インストール

git checkout v6.22.1
scl enable devtoolset-9 bash
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./configure --prefix=/usr/local/mlt-6.22.1
make -j8 && sudo make install 
注意: sclでbashが起動し、その中でconfigureやmakeを実行する。

ビルド

scl enable devtoolset-9 bash
PKG_CONFIG_PATH=/usr/local/mlt-6.22.1/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH LANG=C cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/kdenlive-20.08.0 ..
make && sudo make install

起動スクリプト

以下のシェルスクリプトを用意する。
#! /bin/bash

export PATH="/usr/local/kdenlive-20.08.0/bin:/usr/local/mlt-6.22.1/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/kdenlive-20.08.0/lib64:/usr/local/mlt-6.22.1/lib:/usr/local/lib:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:

exec /usr/local/kdenlive-20.08.0/bin/kdenlive "$@"
LD_LIBRARY_PATHにはKdenliveのパス、mltのライブラリパス、ffmpegのライブラリパス、devtoolで設定されたパスを記載し、最後に:を付ける。

QMLのエラー

以下のようなエラーが出たので、ソースコード中のQMLを修正する。
qrc:/qml/kdenliveclipmonitor.qml:1:1: module "QtQuick.Controls" version 2.4 is not installed
2.4が新しすぎるのだろうと予想して、インストールされているQt5がどのバージョンまでをサポートしているのか確認する。 どうもqmlファイルがいくつかインストールされているようなので、その中のimportコードを確認する。
grep -h -r 'import QtQuick.Controls '  /usr/lib64/qt5/qml/QtQuick/Controls.2/ | sort -u
import QtQuick.Controls 2.2
import QtQuick.Controls 2.2 as Controls
2.2が使われているようなので、2.42.2に置き換える。 たくさんあるのでsedを使った。
sed -i 's/^import QtQuick.Controls 2.4$/import QtQuick.Controls 2.2/' $(git grep -l 'import QtQuick.Controls 2.4')
他にもimportを変更してゆく。
sed -i 's/^import QtQuick 2.11$/import QtQuick 2.9/' $(git grep -l 'import QtQuick.2.11')
sed -i 's/^import QtQuick.Layouts 1.11$/import QtQuick.Layouts 1.3/' $(git grep -l 'import QtQuick.Layouts ')
sed -i 's/^import QtQml.Models 2.11$/import QtQml.Models 2.1/' $(git grep -l 'import QtQml.Models ')
qrc:/qml/kdenliveclipmonitor.qml:514:21: Cannot assign to non-existent property "icon"
src/monitor/view/kdenliveclipmonitor.qml中のicon.name (2箇所) を削除した。

その他

以下のメッセージでFrei0rが見つからない旨が表示された場合、frei0r-pluginsをインストールしてmltをビルドし直す。
Missing package: Frei0r effects (frei0r-plugins) provides many effects and transitions. Install recommended

追記

なぜかeffectsやcompositionsがなにも出てこなかった。 実は、ビルドすると、prefix.shというファイルが生成され、環境変数を設定することになっている。 後日、CentOS 8でKdenliveをビルドしたのだが、このファイルの中身を含んだ起動スクリプトを作成することで、Kdenliveが無事に起動した。

2020-08-29

DVDイメージファイルをMacOS High Sierraでディスクに書き込む方法

MacOS High SierraでDVDイメージファイルをDVDへ焼く方法を説明する.
  1. Finderを開き、イメージファイルのメニューを開く (2指クリックまたは右クリック).
  2. ディスクイメージ"image_file.iso"をディスクに書き込む...をクリックする.
  3. ダイアログが出るので, ディスクを作成をクリックして書き込みを開始する.

2020-08-22

iPhoneにUSBマイクを接続

iPhoneでミーティングに参加する時、より綺麗に声が届くようにするため、Lightning to USB 3 Camera Adapterを購入してみた。

使用した機器は以下の通り。

Lightning to USB 3 Camera Adapter で、充電器から電力を供給しつつ、iPhoneとUSB機器とをつなぐ。
Shure X2Uでマイクからの音声をUSBホストへ送る。

実際に使ってみると、ZoomではUSB接続マイクからの音が届いたが、Cisco WebExでは同じ構成でもiPhone内蔵のマイクのままになった。

2020-04-14

cmake: makeがインストールされていないときのエラー

CentOS 8にて、CMakeを実行すると、以下のエラーが出て、(最後のエラーだけを見ていて) なかなか解決出来なかったので、メモしておく。
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage

原因はmakeがインストールされていないことだったので、以下のコマンドで解決した。

sudo dnf install make

2020-04-09

cmake - makeでコマンドを表示するようにする

CMakeで生成したMakefileは、デフォルトではコマンドを表示せず、進捗をパーセンテージで出す。問題なくビルドが完了する場合は良いが、どこかで失敗したときにデバッグで困る。

<p/>
CMakeが生成したMakefileには以下の記述があるため、コマンドが表示されないようになっている。
<pre>
$(VERBOSE).SILENT:
</pre>
従って、VERBOSEに何か適当な文字を設定すれば、コマンドが表示されるようになる。
<pre>
$ make VERBOSE=1
</pre>

2020-04-04

Git-clone ストレージ容量の削減

Git-cloneをつかうと、すべての履歴がコピーされるため、時間がかかるし、ストレージ容量をかなり消費する。 クローン元に応じて2種類の方法により消費するストレージを削減することができる。

ハードリンク - 同じファイルシステムからクローンする場合

同じファイルシステムからクローンする場合、.git/objects下のデータをハードリンクで作成することで、時間・容量を減らせる。
git clone --local repository [directory]
objectsのファイルは、一度作成されると中身が書き換えられることはないので、特に使用する上で制約はないはずだ。 Git-fetchで新しいコミットを取り込んだ場合は、新しいファイルが作成されるようだ。 また、元のrepositoryでgit-gcを使った場合など、ハードリンクが切れて、消費する容量は大きくなる可能性がある。

浅いクローンをつくる - 外部のURLからクローンする場合

他のファイルシステムや外部のURL (git://...など) からクローンする場合、--depthオプションで浅いクローンを作ることで時間・容量を節約できる。
git clone --depth 1 repository [directory]
もしローカルのレポジトリからクローンする場合、file://を前につけないと、--depthオプションが無視されてそのままクローンが開始されてしまう。

浅いクローンでは、変更履歴が取得されないので、履歴を遡るような用途には使用できない。 もし後で履歴が必要になった場合、git fetchで取得することができる。

もともと、何かのプロジェクトのソースを探していたらgit clone --depthで取得する方法が書かれていてこの方法を見つけたのだが、 git clone --depthについては以下のサイトにわかりやすく書かれている。