コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2019年8月31日 >>> 2019年8月18日
link もっと後

2019年8月31日

ROCKPro64とアナログオーディオ - その2 - Headphone Mixerボリュームのバグ

目次: ROCK64/ROCKPro64

ROCKPro64に搭載されているCODEC(※)はEverest ES8316というICです。このICをlinux-nextのドライバで制御すると、異常な動作をします。

具体的には、Headphone Mixerのボリュームを5以上に変更すると、突然、ほぼ最大音量の馬鹿デカい音になり、バリバリというノイズが載ります。あまりにノイズがひどくて、聴くに堪えないレベルですし、音がうるさくてたまらないです。

ボリューム5〜7は使い物にならないようなので、ボリュームを4にリミットするパッチをLinux Kernel MLに投稿したところ、ドライバの作者が現れ「今の実装の設定値はおかしい」とアドバイスをくれました。作者曰く現在のドライバは、禁止された設定値をレジスタに書いているそうです。正しい設定値も教えてくれました。

教えていただけるのはありがたいんだけど、既に知っていたなら直してほしかったな……。さておき、正しい設定値を入れたパッチを再作成して、投稿しました。

動作テストしているときに、左右のボリュームの「効き」が反転しているバグにも気づいたので、問題を修正するパッチも合わせて投稿しました。

両パッチともに、先日Linux ASoCツリーに取り込まれたようです。このままLinux 5.3に取り込まれると思われます。良かった良かった。

(※)LinuxではI2Sなどのデジタルオーディオとアナログオーディオ間を変換するDAC/ADCをCODEC と呼びます。

確かにCode/Decodeを行うため、使い方としては合っているし、こちらの方が一般用語かもしれないが、テレビ系SoCとの関わりが深かったので、codecと言われるとMPEG2やAACのような動画像、音声圧縮展開の方を思い浮かべてしまう……。

メモ: 技術系の話はFacebookから転記しておくことにした。全体的に小修正。

編集者:すずき(2020/10/30 00:54)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2019年8月29日

独自のaptサーバー - その5 - 複数のセクションに対応する

目次: apt

前回、Tree::Sectionsには複数のセクションが指定でき、Tree::Architecturesには複数のアーキテクチャが指定できますが、TreeDefault::Packagesとの対応がよくわからない。と書きましたが、複数のセクションを同時に指定する手段が見つかったので、メモしておきたいと思います。

書き方は簡単で、前回TreeDefaultのパスに出現するセクション名をstableと決め打ちで書いていました。これを $(SECTION) に置き換えるだけです。アーキテクチャ名なら $(ARCH) です。

apt_generate_debian_buster.confで複数のSectionsを指定

Dir::ArchiveDir ".";
Dir::CacheDir   "dists/buster";
Default::Packages::Compress   ". gzip bzip2";
Default::Packages::Extensions ".deb";
Default::Sources::Compress    ". gzip bzip2";
Default::Contents::Compress   ". gzip bzip2";
Default::FileMode             0644;
TreeDefault::Directory        "dists/buster/pool/$(SECTION)/$(ARCH)";
TreeDefault::Packages         "dists/buster/$(SECTION)/binary-$(ARCH)/Packages";

Tree "dists/buster" {
    Sections "stable testing nightly";
    Architectures "amd64";
};

それともう一つ差分がありまして、BinDirectoryの指定はなくても動くことがわかりましたので、削除しています。

セクションを複数指定できるようになりましたので、スクリプトも若干変わります。

apt-ftparchiveを呼ぶスクリプト

export TARGET=debian
export DIST=buster
export ARCH=amd64

for SECT in stable testing nightly
do
    mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/${SECT}/binary-${ARCH}
    mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}
done


### *.debファイルをコピーする(モジュールによってコピー元は違うと思うので、これは一例)
### cp *.deb /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}


### Packages, Contentsファイルを作る
### linux/debianの下でapt-ftparchiveを実行しないと *.debが見つからないといわれる

cd /var/www/linux/${TARGET}
find . -name "Contents-*" -or -name "Contents-*.*" | xargs rm -f
find . -name "Packages" -or -name "Packages.*" -or -name "packages-*" | xargs rm -f
find . -name Release -or -name Release.gpg -or -name InRelease | xargs rm -f
apt-ftparchive generate ../conf/apt_generate_${TARGET}_${DIST}.conf


### Releaseファイルを作る
### linux/debian/dists/busterの下でapt-ftparchiveを実行しないと、
### 後ほどapt-getを実行した際にパッケージが見つからないといわれる

cd /var/www/linux/${TARGET}/dists/${DIST}
apt-ftparchive release -c=../../../conf/apt_release_${TARGET}_${DIST}.conf . > Release


### Releaseファイルに署名する

echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback --clearsign -o InRelease Release
echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback -abs -o Release.gpg Release
chmod 644 Release InRelease Release.gpg

これで粗方、やりたかったことができたのではないかと思います。

動作確認

今回もDockerのリポジトリから *.debを拝借します。セクションStableにはcontainerd.io、Testingにはdocker-ce-cli、Nightlyにはdocker-ceを配置するなど、各セクションに全く違う *.debを配置すると後で見やすいです。

テストに使うディレクトリ

# tree linux/

linux/
|-- conf
|   |-- apt_generate_debian_buster.conf
|   `-- apt_release_debian_buster.conf
`-- debian
    |-- dists
    |   `-- buster
    |       |-- InRelease
    |       |-- Release
    |       |-- Release.gpg
    |       |-- nightly
    |       |   |-- Contents-amd64
    |       |   |-- Contents-amd64.bz2
    |       |   |-- Contents-amd64.gz
    |       |   `-- binary-amd64
    |       |       |-- Packages
    |       |       |-- Packages.bz2
    |       |       `-- Packages.gz
    |       |-- packages-amd64.db
    |       |-- pool
    |       |   |-- nightly
    |       |   |   `-- amd64
    |       |   |       `-- docker-ce_0.0.0-20180901050402-e5babb2-0~debian_amd64.deb
    |       |   |-- stable
    |       |   |   `-- amd64
    |       |   |       `-- containerd.io_1.2.0-1_amd64.deb
    |       |   `-- testing
    |       |       `-- amd64
    |       |           `-- docker-ce-cli_18.09.0~3-0~debian-buster_amd64.deb
    |       |-- stable
    |       |   |-- Contents-amd64
    |       |   |-- Contents-amd64.bz2
    |       |   |-- Contents-amd64.gz
    |       |   `-- binary-amd64
    |       |       |-- Packages
    |       |       |-- Packages.bz2
    |       |       `-- Packages.gz
    |       `-- testing
    |           |-- Contents-amd64
    |           |-- Contents-amd64.bz2
    |           |-- Contents-amd64.gz
    |           `-- binary-amd64
    |               |-- Packages
    |               |-- Packages.bz2
    |               `-- Packages.gz
    `-- gpg
        `-- public.key

18 directories, 28 files

上記はリポジトリ情報を生成した後の状態です。各セクションの下にContentsとPackagesが生成されます。ファイルが生成できたら /etc/apt/sources.listにこのサーバーを指定して、apt-get updateを実行します。

/etc/apt/sources.listに独自aptサーバーを追加

deb [arch=amd64] http://192.168.1.1/linux/debian/ buster stable
  -> containerd.ioがインストールでき、他のdocker-ce-cliやdocker-ceはインストールできないはず

deb [arch=amd64] http://192.168.1.1/linux/debian/ buster testing
  -> docker-ce-cliがインストールでき、他のcontainerd.ioやdocker-ceはインストールできないはず

deb [arch=amd64] http://192.168.1.1/linux/debian/ buster nightly
  -> docker-ceがインストールでき、他のcontainerd.ioやdocker-ce-cliはインストールできないはず

指定の方法は上記のとおりです。セクション名stableの部分をtestingやnightlyに入れ替えても、apt-get updateが成功すれば、複数セクションの扱いはうまくいっています。

また、セクションstableを選んだときはcontainerd.ioがインストールできて、他のものはインストールできないはずです。testingだとdocker-ce-cli、nightlyだとdocker-ceがインストールできて、他の2つはインストールできなくなります。セクション指定が機能していることがわかると思います。

編集者:すずき(2021/08/05 12:12)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2019年8月25日

安くて良いヘッドフォン

AKG K240に似ていることで有名(?)なSuperlux HD681Bを買いました。Amazonで3,000円程度です。噂通り音は良いです。

残念ながら数万円する高級ヘッドフォンを使った経験はほぼないので、高級な音かどうかまではわかりません。

現在使っているaudio-technica ATH-TAD500はかなりシャリシャリ気味の音ですが、HD681Bはさらに輪をかけて高音が強いです。かなりキンキンしています。

普段聴いている音楽をHD681Bで聴いてみると、今まで聞いたことのない「キーン…、キーン…!」という音が聞こえます。こんな音鳴ってたのか…??

感想

大きさの割に軽いし、圧迫されるような感じはしませんが、長時間使うとちょっと耳が痛くなります。

この製品に限った話ではありませんが、レザータイプのイヤーパッド(=汗を吸わない)、セミオープンエアー型(=音漏れが激しい)なので、室内用に最適だと思います。

メモ: 技術系の話はFacebookから転記しておくことにした。後半を追記。

編集者:すずき(2019/08/25 15:06)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2019年8月21日

ROCKPro64とアナログオーディオ - その1 - linux-nextのドライバ

目次: ROCK64/ROCKPro64

ROCKPro64でRockchipの公開しているLinux(以降、Rockchip Linux)ではヘッドフォン出力できるのに、linux-nextだとできないのはどうして?と思って調べていたところ、悲しいことがわかりました……。

ROCKPro64はEverest ES8316というDACを搭載しています。ドライバはsound/soc/codecs/es8316.cです。なんとこのドライバはですね、Rockchip Linuxに実装されているドライバ(Rockchipの人が書いた)と、linux-nextのドライバ(Everestの人がUpstreamした)が全然違う実装になっています。

ES8316のドライバが全く違うお陰で、Rockchip Linuxからdevicetreeを持ってきてもウンともスンとも言わないのです。まさかES8316のドライバ実装が全く違なんて想像していませんでした。どうしてこんなことに……。

しばらく戦ってみましたが、linux-nextのES8316ドライバの動きは良くわかりませんでした。clocksプロパティにダミーの12MHzクロックを指定すると、とりあえずドライバは文句を言わなくなるものの、肝心の音は鳴りません。

残念ながらRK3399側の問題(例えばMCLKが出力されていないなど)なのか、ES8316側の問題なのか切り分けができていません。

各端子に来ている信号をオシロスコープで見れば、原因の切り分けができるのはわかっていますが、ROCKPro64はプローブを当てることなど考慮して作っておらず、端子に名前が書いてないし、非常に細かいです。変にプローブを当てるとショートさせてしまいそうです。

編集者:すずき(2020/10/30 00:52)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2019年8月31日 >>> 2019年8月18日
link もっと後

管理用メニュー

link 記事を新規作成

<2019>
<<<08>>>
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事20件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
  • link 24年11月2日
    すずき (11/15 23:25)
    「[Python - まとめリンク] 目次: Python一覧が欲しくなったので作りました。 スクリプト言語始めました(Pyth...」
  • link 20年5月10日
    すずき (11/15 23:24)
    「[Pythonの文字置換APIは変な名前] 目次: PythonPythonの文字列置換は "string".replace(...」
  • link 24年2月7日
    すずき (11/15 23:23)
    「[複数の音声ファイルのラウドネスを統一したい] 目次: PythonPCやデジタル音楽プレーヤーで音楽を聞いていると、曲によっ...」
  • link 13年7月2日
    すずき (11/15 23:22)
    「[スクリプト言語始めました(PythonとRubyでNクイーン問題)] 目次: ベンチマーク目次: Pythonスクリプト言語...」
  • link 23年9月18日
    すずき (11/15 23:22)
    「[一覧の一覧 - まとめリンク] 一覧の一覧、まとめのまとめが欲しくなったので作りました。OS、アーキテクチャ系。目次: An...」
  • link 13年10月1日
    すずき (11/15 23:21)
    「[JetBrains PyCharm 3.0リリース] 目次: PythonPyCharmがメジャーアップデートされ PyCh...」
  • link 22年7月8日
    すずき (11/08 23:28)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介面白かった漫画の紹介です。知名度はあまり気にせず紹介します。5作品乙女ゲー...」
  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
  • link 19年3月28日
    すずき (11/02 13:27)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 21年6月20日
    すずき (11/02 13:22)
    「[読書一生分が93万円?] 目次: マンガ紹介書籍通販のhontoがこんなキャンペーンをやっています。honto読書一生分プレ...」
  • link 17年10月27日
    すずき (11/02 13:11)
    「[異世界&最強系漫画の種類] 目次: マンガ紹介少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「...」
  • link 24年10月28日
    すずき (10/30 23:49)
    「[Linuxからリモートデスクトップ] 目次: Linux開発用のLinuxマシンの画面を見るにはいろいろな手段がありますが、...」
  • link 24年10月24日
    すずき (10/25 02:35)
    「[ONKYOからM-AUDIOのUSB DACへ] 目次: PCかれこれ10年以上(2013年3月16日の日記参照)活躍してく...」
  • link 24年7月25日
    すずき (10/25 02:24)
    「[OpenSBIを調べる - デバイスツリーの扱い(別方法)] 目次: LinuxOpenSBIのブート部分を調べます。Ope...」
  • link 24年8月7日
    すずき (10/25 02:23)
    「[Debian独自の挙動をするQEMUとbinfmt_misc] 目次: Linux前回はbinfmt_miscの使い方や動作...」
  • link 24年9月9日
    すずき (10/25 02:22)
    「[GDBの便利コマンド] 目次: LinuxGDBは便利ですが、少し使わないでいるとあっという間にコマンドを忘れます。便利&使...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/19 01:04