固定インターネットラジオのレビューとプログラミング

数年前に、ルーターからネットワークサウンドカードを作成する方法に関する記事を既にレイアウトしまし 。 そのオプションには、アクティブな音源とスピーカーが必要でした。 ポータブル版はかさばるので、完成品を購入することにしました。 可用性の理由と最も安いオプション(50ユーロ)として、私はrenkforce IR 1を選択しました







画像







主な特徴のうち、次のことが私にとって重要でした。









画像







DLNA



DLNAの存在により、サウンドをLinuxからインターネットラジオに直接リダイレクトできます。 これは、少なくとも3つの方法で実行できます。









これらの方法の詳細については、 こちらをご覧ください







Androidフォンから直接音楽を再生することもできます。 DLNAサポートは、Samsungのプレインストールされた音楽プレーヤーでのみ見つかりました。 Google PlayでDLNA対応の音楽プレーヤーを見つけようとしましたが、役に立ちませんでした。







Wifi



唯一の小さな欠点は、802.11nプロトコルのサポートがないことです。









このカテゴリのデバイスの音はかなりまともです(10Wで1人のスピーカー)。 私はオーディオファンではありませんが、通常のラップトップに組み込まれているスピーカーとの違いは重要です。 ベース、ジャズサウンド、ロック、エレクトロニックミュージックもあります。 2つの列を持つバリアント( renkforce IR 2モデル)がありますが、私はそれを不要とは考えませんでした。







スクリーン



画面は普通です。 インターフェイスは非常にフレンドリーです...







画像







ただし、独自のラジオ局を追加する手順には、多くの要望があります。







プレイリスト



プレイリストのため、私はこの記事を書くことにしました。 リモートコントロールまたはスクロールホイールを使用してラジオステーションのURLを手動で駆動することも別のアクティビティです。 リモコンの数字ボタンを使用するときの文字の出現順序は、プッシュボタン電話でSMSを入力するときに使用するものとは非常に異なります( 2の場合、これは「2 ABC ab c」などのシーケンスです)。 スクロールホイールを使用する場合は、アルファベットの各文字をスクロールする必要があります。 Webインターフェースからプレイリストを追加できるかどうかを分析することにしました。







Webインターフェイスが削減されました。 AirMusicヘッダーのある開いている80番目のポートには、設定ラベルのみが表示されます。 HTMLは、ポート8080に存在しないCSSスタイルを指します。 8080ポート自体には、デフォルトで404 Not Foundと表示れます。







幸いなことに、telnetポートが利用できました。 ルートユーザー名とパスワードパスワードを使用して、組み込みのbusyboxにアクセスできました。 内部デバイスの調査により、次の情報が得られました。









UIProtoは、お気に入りプレイリストをファイル/flash/myradio.cfgにバイナリ形式で保存します。 端末出力から読み取ることは可能ですが、テキストとしてのみ可能です。 ファイルを完全に取得するには、少し汗をかかなければなりませんでした。 幸いなことに、ラジオのbusyboxftpputおよびftpgetコマンドをサポートしてコンパイルされています 。 FTPサーバーをセットアップした後、それらを使用して、さらに調査するためにファイルをコンピューターにコピーしました。







xxd(1)ユーティリティでバイナリファイルを分析しました。 およそのファイル構造は次のようになります。







Amount of entries: 2b Every entry len: 366b 0x00: 1b 0x00|0x02|0x03: 1b 0x20 (32): 1b 0x00: 6b 0x07|0x05: 1b len(0xTITLE+1): 1b 0x80: 1b 0xTITLE: 40b 0x00: 59b 0xURL: 250b 0x00: 5b 0x00: 2b
      
      





構造内の一部の要素が、割り当てられていない割り当てられたメモリからの通常のゴミである可能性を排除しません。 これらの要素でゼロを使用しても、最終結果には影響しません。







Cのユーティリティの初期バージョンでは、ハードコードされたプレイリストが保持されていました。 単一リンクリストを使用して、構造をユーティリティメモリに保存しました。 最初の起動の結果は、デバイスにダウンロードしたテストバイナリプレイリストによって提供されました。 未知の構造要素にゼロがあったとしても、新しいプレイリストは正常に読み込まれました。 ユーティリティの最終バージョンは、CSVファイルからプレイリストを読み取り、それをバイナリ形式に書き込みます。 素晴らしいボーナスは、URLの代わりにラジオステーションのヘッダーを使用したことです(以前のリストのラジオステーションはhttp://1.2.3.4:8080/radio.mp3として表示されていました)。







結論として、実験のために、ラジオ自体で直接実行できる静的ネイティブバイナリをコンパイルしようとしました。 これによる実用的な利点はありませんが、httpdデーモンを作成して、Webインターフェースから直接ラジオステーションを編集できるようにすることができます。 よりグローバルで実現不可能なアイデアは、インターネットラジオ用の完全にオープンソースのファームウェアを書くことです。







更新後にUIProtoでプレイリストを読み込みする方法は、まだわかりません。 筋金入りの方法- 同期と再起動を使用します。







プレイリストをラジオにダウンロードするために、 expect(1)を使用てスクリプトを作成しました。







USB



ボードにははんだ付けされていないUSBがあります。 dmesg(1)から判断すると、非常に効率的です。 実際にそのパフォーマンスを確認する時間はまだありません。







画像







参照資料






All Articles