2022年5月22日日曜日

Logitech Media Server(LMS)をraspberrypiで使ってみた

Logitech Media Server:
https://en.wikipedia.org/wiki/Logitech_Media_Server

これ、結構良い、面白い

最初はradiko再生のために、使ってみたんです。

Volumio2には、LMSとsqueezeliteという組み合わせがあるので、お手軽に試せました。

radikoそのものの再生は、他のページで説明があるので割愛します。

試したのは、

  • Volumio2:plugin LMS(ver7.9?),squeezelite
  • Volumio3:plugin LMS(Ver8.2.0),squeezeliteはマニュアルインストール
  • raspberrypi:LMS(Ver8.3.0)nightlyβ

ちなみにβバージョンのの入手先は
Some Software Beta Downloads https://downloads.slimdevices.com/nightly/index.php


なかなかよくできていると思います。

弄っていて面白いし・・・・・


でも、ですよ。ひとつだけ問題が

もしかすると、他の人は経験していないのかもしれませんが・・・・


ローカルファイル(NASに保存してあるiTunesライブラリ)を再生していると途中で止まってしまうことがあることに気が付いた。しかもたまにプレイヤーが表示されなくなるという・・・・

ラジオを再生しているときはそんなことはなかったのですが・・・・

これはなにかある。


原因を調べているうちに・・・・

squeezeliteのstatusに多量のエラー表示・・・

avcodec_decode_audio4 error: -22 Invalid argument

avcodec_decode_audio4 error: -22 Invalid argument

                                            .

                                            .

                                            


再生しているときに永遠にこのエラーが表示され続けます。
そして、最終的にsqueezeliteが落ちてしまいます。

このエラーが原因のようですね・・・・
これについて、ずいぶんとネットを検索かけたのだが、ヒットせず・・・なぜだ。。。

でも、どうやらALACファイルを再生するとクライアント側で出るエラーのよう。。。

ということで、探し当てたのが・・・

LMSの設定画面で

Apple Loslessの項目をNative→無効にしてみた。すると・・・・


どうやらFLACに変換されつつ再生されるようだ

FLACに変換して配信することによって、途中で止まることもなくなった。

根本的な解決にはなってません。

が、FLACも可逆圧縮なので劣化はほぼないと考えて、気にしないことにします。


コントロールソフト

iPhohe: iPeng 有料ですがよくできているので買ってしまいました。

android: Squeezer こちらは無料です。

いずれも、ブラウザコントロールよりは断然使いやすいです。

一日中、ラジオつけっぱなし・・・的な使い方をしています。
作業中にあるとうれしいですね(^▽^)/

2022年5月14日土曜日

アナログ電源のraspberrypi2とES9038q2mを使ったネットワークDACをアイソレート

以前作成したraspberrypi利用のDACのGNDを、アイソレートしてみました。

・・・ずっと気になってたんですが、今頃になってしまいました('◇')ゞ


過去記事


とまぁ、結構本気で考えて作ったものだったのです。

raspberrypiとes9038q2mの接続にI2Sを利用したのは良かったのですが、GNDが共通になってしまったので結果的にデジタル部(ラズパイ)とアナログ部が共通GNDでつながってしまい、ノイズ対策としてはいまいちでした。

実際、ボリュームを最大にして、能率の高いインナーイヤホンで視聴するとかすかにデジタルノイズを感じました。



というわけで、いまさらなのですが、ISO7640FMでアイソレートしました。

これで、やっとアナログ電源を奢った効果があるというものです。

上にraspberrypiをタンデムしているので、載せてしまえば見た目は変わりませんが、


音は確実にアップグレードしている”はず”です。

ついでに、raspberrypiにはVolumioを載せることにしました。

なぜかというと、radikoを再生するのにVolumio2だとLogic Media serverとsqueeze liteがプラグインで導入できて簡単だと思ったからです。

しかし、どうしてVolumio3ではsqueeze liteプラグインが有効になっていないのでしょうねぇ。今更ながら、過去のバージョンのVolumioを入れなければならないなんて・・・・

ディスクに保存してあったから使えたけど、ネットで探そうと思うとちょっと苦労しますね。


2022年5月8日日曜日

絶縁トランスとオーディオ

いつものハード〇〇によってみると。。。。
110V入力100V出力のトランスが330円で。。。。
もうひとつあるのはマウス、110円だったので一緒に捕獲してきた。

このトランス・・・・

どうやら、海外で日本の電化製品を使うために作られたようだ。。。
実際入力に100Vを入れると、出力は約90Vになる。

でも、これをオーディオ用の絶縁トランスとして使えないかなと。。。

RoonのCoreにしているLinuxマシンは12Vのスイッチング電源アダプタを使っている。
なので多少入力電圧が下がっても出力電圧は保たれるはず。
それよりもトランスで商用電源と絶縁できるところに意味がある。

100Vを通じたグランドループを断ち切ることができる

というわけで、やってみた!!

スイッチングハブのほうに使うか、Roon CoreのLinuxマシンのほうに使うかで迷ったのだけれど、Roon Coreのほうにしてみた。

結果は・・・・・・

これが、びっくりするぐらい効いた


SANSUIブランドのスピーカ、S33は結構高音域がキラキラしているので、どうしても雑に聴こえる楽曲が多く、あまり使わなくなっていたのですが・・・・

Roon Coreの電源をケアしただけで、こんなに滑らかになるなんて・・

330円でこんなに改善するとは思っていなかったのでうれしい誤算。

今日は、SANSUI S33で、、ずっとジャズを聴いている。。。。。

2022/05/14 追記

恥ずかしい話ですが・・・・・
このSU-100は絶縁ではありませんでした。最初に確認したときは110V入力側と100V出力側でテスターで導通を確認したところ、その時はきっとテスタのプローブがきちんとあたってなかったのだと思います。導通がなかったので、てっきり2次側コイルが巻いてあるものと勘違いしてしまいました。

このトランス。。。。単相、単巻です。。。。
はい、絶縁されていません。。。
もう一度確認したら・しっかり導通してました。。。

なのに、”びっくりするぐらい効いた”のですから・・・ほんとにびっくりです(笑)

確かに音は良くなりました。。。
なんでかなぁ・・・・・

商用電源に、インダクタを直列に入れたような効果があったのだと思います。
たぶん。。。

RDA5807とarduinoでFMラジオ

RDA5807というFMラジオDSPチップがあります。
これは、マイコン等で制御するDSPラジオなのですが・・・・


Amazonをみていたら、1つあたり100円ちょっとという値段で出ていたので手に入れてみることにしました。

マイコンはarduinoを使います。ライブラリにRadioというものがあり、その中にRDA5807もサポートされているので簡単に動かせそうです。

インストールするとlibrariesフォルダの中にRadioフォルダがあります。
その中のexampleフォルダから
RDA5807を選んで試しに動かしてみたらあっさり動くようです。

ただし、実は
最初に使ったこのチップの載った1枚めは、どうやら不良品!?だったようです。
感度が1.5μVのはずなのに、地元のコミュニティFMが雑音まみれでうまく受信できません。

TEA5767では若干ノイズがのるもののきちんと受信はできるのに・・・・
(実はTEA5767とRDA5807ボードはピンコンパチでしかもRDA5807にはTEA5767と同じコードで動くモードがあって差し替えが可能なのです)

で、諦めかけたのですが・・・・なにせ同じものが5枚もあるのでだめもとで違うボードを試してみたら・・・・

ほぉ、感度良い。TEA5767よりもいいんじゃないの!!

中華モノによくある初期不良って言うやつにあたったのかも。。。。

実験的に
ブレッドボードに組んでみました。
回路図は面倒なので載せませんが・・・・
arduinoは3.3V品を使ってみました。
なのでI2S接続はレベル変換なしに直につなげられます。
出力はステレオ出力なので300円ダイソースピーカにつなげました。
楽で良いですね。


スケッチ。。。
注意点がひとつ。。
初期化のところでdelay(3000);とかなり大きなウエイトをかけています。
これがないと、最初に電源ONしたときだけ、RDA5807がこけます^^;
うまくsetFrequancyされない感じでノイズだけになってしまうことがありました。

注意点はそのくらいですかね

次回起動時のためにEEPROMには周波数(NO)とボリュームを保存することにしました。


// RDA5807Radio

#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
#include <EEPROM.h>
#define FIX_BAND  RADIO_BAND_FMWORLD //76-108Mhz対応

uint16_t freq[]={7620,7710,8180,8530,9080}; //周波数プリセット7620=76.2Mhz
uint8_t freq_max_num;
uint8_t freq_num=0;
uint8_t volume=15;
uint32_t timepassed=millis();
bool ROMsaved=1;
bool ROMwrite=0;
bool setmute_f=0;

RDA5807M radio;    // Create an instance of Class for RDA5807M Chip

void setup()
{
  pinMode(4,INPUT_PULLUP); //freq change
  pinMode(5,INPUT_PULLUP); //set mute
  pinMode(6,INPUT_PULLUP); //volume up 
  pinMode(7,INPUT_PULLUP); //volume down 
  Wire.begin();
  Serial.begin(9600);
  
  // Initialize the Radio  
  radio.init();
  delay(3000); //RDA5807がコマンドを受けられるように準備のための遅延
  radio.debugEnable();
  
  // load previus data
  freq_max_num=(sizeof(freq)/sizeof(uint16_t))-1;
  if (ROMsaved){
    freq_num=EEPROM.read(0);
    volume=EEPROM.read(1);
  }
  radio.setVolume(volume);
  radio.setMono(false);
  radio.setMute(setmute_f);
  radio.setBandFrequency(FIX_BAND,freq[freq_num]);
}

void loop()
{
  if (digitalRead(4) == LOW) {
    freq_num++;
    if (freq_num > freq_max_num) freq_num=0;
    radio.setFrequency(freq[freq_num]);
    timepassed=millis();
    ROMwrite=1;
    delay(500);
  }
  if (digitalRead(5) == LOW) {
    setmute_f=1^setmute_f;
    radio.setMute(setmute_f);
    delay(200);
  }
  if (digitalRead(6) == LOW) {
    if (volume<15){
    volume++;
    radio.setVolume(volume);
    timepassed=millis();
    ROMwrite=1;
    delay(200);
    }
  }
  if (digitalRead(7) == LOW) {
    if (volume>0){
    volume--;
    radio.setVolume(volume);
    timepassed=millis();
    ROMwrite=1;
    delay(200);
    }
  }

  //if freq,volume change EEPROM write
  if ((ROMwrite)&(timepassed+5000 < millis())) {
    ROMwrite=0;
    EEPROM.write(0,freq_num);
    EEPROM.write(1,volume);
    Serial.println(freq_num);
    Serial.println(volume);
    Serial.println(" saved");
  }
}


いやぁ、なんのことはないのですが、プログラムがちゃんと意図したとおりに動いてくれると楽しいものです。
人間世界では自分の意図したとおりになることは少ないので余計に(笑)

参考サイト
  • GitHub - mathertel/Radio: An Arduino library to control FM radio chips like SI4703, SI4705, RDA5807M, TEA5767.
    https://github.com/mathertel/Radio
  • Arduino Radio Library - The Library
    http://www.mathertel.de/Arduino/RadioLibrary.aspx
  • FMステレオラジオ II
    http://xyama.sakura.ne.jp/hp/FM_StereoRadioII.html
  • ワイドFM DSPラジオ (RDA5807M)を作ってみた – 店舗、生産者を応援
    https://www.himeport.co.jp/private_blog/%E3%83%AF%E3%82%A4%E3%83%89fm%E3%80%80dsp%E3%83%A9%E3%82%B8%E3%82%AA-%EF%BC%88rda5807m%EF%BC%89%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/?utm_source=pocket_mylist
  • aitendo の DSP ラジオの比較表 - Y-Lab. Electronics
    http://eleken.y-lab.org/report/other/dsp_radio.shtml?utm_source=pocket_mylist
  • 【格安】FMラジオモジュール RDA5807Mを試してみる – 某氏の猫空
    https://blog2.k05.biz/2020/02/rda5807m-fm-radio.html?utm_source=pocket_mylist
  • ArduinoとRDA5807でFMラジオを聴く - Qiita
    https://qiita.com/nanase/items/b9efc547d395d2d7cbc0?utm_source=pocket_mylist

2022年5月3日火曜日

MSI A75IA-E53 mini-ITX boardでZorin16を使ってみた

zorin16を使ってみた



結論から言うと・・・・
クライアント用途としてよくできている・・・

ただし・・

ネットワーク越しにVNCとかでつなごうとか
すると、途端につまづくことになる。

いまのところうまくいかないところは
  • VNC接続しようとしても、クライアントでディスクトップにログインしていないと接続できない。
  • つまり、遠隔から起動させてからのVNC接続は難しいっぽい
  • sshでごにょごにょやるぶんには全然OKなんだけど、画面共用しようとすると・・・・
  • 自分の環境ではVNC接続しても文字の入力ができなかった。。。なんでだろ使えない
というわけで・・・・

いろいろ遊ぶぶんには良いかな。とっつきやすい。(Windowsになれてる人向け)

気に入っているところ
  • Windowsライクな操作性のリナックスとして使うのが吉!!
  • 普通にPCを使う感じで接するととてもよい
  • 背景の壁紙はきれいだし。
  • しかも、時間帯によって壁紙が自動で切り替わる。
  • とにかく画面がきれい。
  • サスペンドから戻るときに時計表示なるとか洗練されている
最近のリナックスディストリビューションは画面がキレイなものが多くなったと感じています。Kona-linuxといいZorinといい。。。
本当にもう、画面がキレイなだけで使ってみようという気になるからねぇ(笑)


メモ
カスタマイズにはこの辺を参考にした。

Ubuntuキーボードレイアウト変更手順 - golangの日記
https://golang.hateblo.jp/entry/ubuntu-keyboard-layout?utm_source=pocket_mylist

Ubuntu 18.04で最初に行うおすすめ設定 | Ubuntuアプリのいいところ
https://ubuntuapps.net/blog-entry-1039.html?utm_source=pocket_mylist

「Mozc」の日本語入力ON/OFFショートカットキーを設定する(トグル無)【Ubuntu20.04・USキーボード・Fcitx】 | neputa note
https://www.neputa-note.net/2021/10/blogpost06.html?utm_source=pocket_mylist

2022年5月1日日曜日

MSI FM2-A75IA-E53 で Wake on LanのためのBIOS設定

MiniITXでLinux。。。。
この組み合わせでもWake on Lanがしたい。。。

でも、このマイナーなボードでの設定は、インターネット上にもなかなかありません。

そして、BIOS設定で、この組み合わせでしかWake on Lanは動きません。。。


この画面のみOCのところにあります。しかもスクロールしないと出てこないところにあるので、しばらく見つけることができませんでした。。。。

C6ステートはdisable にしておかないとsuspendすると再起動になってしまいます
Power Polycy Mode Performanceにしておかないとsuspend,電源OFF時にLANに電源が供給されないようです。つまり、マジックパケットを送っても起動しません


ここは、あちこちのサイトでも記述があります。Resume on PCI-E DeviceでLANからPCを起こすことができるようになります。


ACPI はS3にしておきます。ここがdisableだとsupendしたときに、反応がなくなります。


そして、EUP 2013もdisableにします。これも省電力設定なので、そうしておかないとWakeON Lanができません。

とまぁ、設定するところが多いこと・・・・まるでそんな使い方は邪道だといわんばかり

WakeONLanについての設定は、ethtoolを使います。
あとはググれば出てくることなので、そちらに任せます。