Kindleについての覚書

Linux 環境で Kindle を使いたいなあと思ったので覚書です。

Wineのインストール

Wine は普通にwine64winetricksをインストールします。

$ sudo apt install -y wine64 winetricks

フォントのインストール

これだけだと文字化けしてしまうので、winetricks を使って cjk フォントをインストールします。

$ winetricks cjkfonts

Kindleのインストール

なんとなく旧バージョンの1.17を入れたくなったので1.17をインストールします。
ただ、Amazon 公式では既に配布が終了しているので、適当な野良サイトから落としてきます。

私はここから1.17.44170を落としてきました。
野良サイトからバイナリを落としてくるときは忘れずにハッシュを確認します。
私はここでハッシュを確認しました。

$ sha256sum kindle-for-pc-1-17-44170.exe

14e0f0053f1276c0c7c446892dc170344f707fbfe99b6951762c120144163200  kindle-for-pc-1-17-44170.exe

ハッシュが一致しているので OK ですね。

あとは普通にダブルクリックして wine からインストールします。
ただ、ネットワークに接続できませんと表示されてログインもできません。
これは古い証明書が消されているせいのようです。

証明書のインストール

私は LinuxMint を使っていますが、Linux の最近のバージョンでは消されている古い証明書があるようです。
Kindle 1.17 では旧 Symantec 社の証明書を使っていて、そのために接続が失敗しているようです。

(参考: https://twitter.com/sagawa_aki/status/1362372893716344834?s=20)

というわけで、ここから旧 Symantec の G5 ルート証明書をいただいて、手動で追加する必要があります。

適用な名前でファイルを作る必要があるので、コピー&ペーストして仮にG5.crtとして保存します。

ファイルを作ったら、こちらの記事を参考にして証明書を認識させます。

$ sudo mkdir -p /usr/share/ca-certificates/mylocal/

$ sudo cp /path/to/dir/G5.crt /usr/share/ca-certificates/mylocal/

$ sudo update-ca-certificates

再度 Kindle を起動して、無事にネットワークに接続できれば OK です。

kindlekeyを入手する

もしかしたら kindlekey 的なものが欲しくなるかもしれません。その場合は、Wine 環境に python2 系をインストールして、kindlekey[.]py (もしくは kindlekey[.]pyw)を実行する必要があります。

まずはここからpython2をダウンロードして、サクッとインストールします。

次に、どこかから kindlekey[.]pyw を見つけてきて、$HOME/.wine/drive_c/に配置します。

$ wine cmd

Z:\home\negitoro.wine\drive_c>python kindlekey.py

もし ImportError: No module named winreg 的なものが出たら winreg_winreg に置換して再度実行します。

Key successfully retrieved to kindlekey1[.]k4i と表示されたら終了です。


iPhone3GをAirPlayスピーカーにする

お久しぶりです。なかなか書く気にならなかったのでだいぶ時間が空いてしまいました。
このブログは Hexo を使って書いていますが、はてブロみたいにさらっと公開できないのでネタがあっても面倒であんまり書こうと思えないのが微妙ですね。
そもそもこのブログは勉強のために作ったものなので、そろそろ Nuxt とか Next なんかを使って作り直したいところです。

本題

今回は発掘した iPhone3G を AirPlay スピーカーにしてみたので、その記録として残します。

探す

結構記事があったりアプリがあったりするんですが、そもそもの話古い iOS には対応していないので、今回発掘したような化石には残念ながら使えません…。

というわけで古い記事を探すことになるのですが、まあこの頃の iPhone に対応しているようなアプリはまず脱獄が前提です。今回は sn0wbreeze で脱獄済みなので割愛しますが、やってみようという方は sn0wbreeze か redsn0w などで脱獄しておくとよいでしょう。

まずは Cydia で探してみますが、こちらにある AirServer なども i0S4.3 や iOS5 からの対応ばかりで惜しくも使えません(iPhone3G は iOS4.2.1 が最後)。3GS なら使えたのに、残念。

(少し前に、色々なリポジトリの提供元が Cydia から撤退するようなニュースをみましたが、そういえばどうなったんでしょうね。BigBoss はまだ生きていました)

さらに調査してみますが、AirServer の旧版アーカイブなどもリンク切れでなかなか見つかりません。airtunesdなるアプリも見つけましたが、こちらもバーション的に対応していませんでした(一応リンクを残しておきます。注意喚起ですが、こういうものを気軽に試すのはセキュリティ的にあまりお勧めしません)。

見つける

というわけで最終的に(奇跡的に?)たどり着いたのがこちらです。

AirFloat というアプリのリポジトリなのですが、issue で親切にもバイナリを配布してくれている方がいました。iOS4.2.1 に対応しているようで、iPodTouch2G や 5G でも動くようです。

一応、修正版なるものもアップロードされているようなのでこちらの方がいいかもしれません(違いがよくわかりませんが)。

インストール

zip を落としてきたら、解凍して AirFloat.app があることを確認します。次に、なんらかの手段で iPhone の/Applications に転送します(私は iFunBox を使いました)。

そうしたら今度は、AirFloat.app/AirFloat に実行権限を付与します。ここで注意ですが、AirFloat.app ではなく、内部の AirFloat(拡張子なし)に権限を付与します。

こちらもなんらかの手段で権限を設定しましょう。iFile でつけられるとのことだったので iFile を試しましたが、うまく動かなかったので今回は MobileTerminal で設定します。MobileTerminal は iOS3 から対応しているようですね、Whited00r でも安心。iFile や SSH でも良いでしょう。

MobileTerminal を立ち上げたら、早速 root になります。パスワードは変更していなければ alpine です。

$ su
Password:

そうしたら実行権限を付与します。

$ chmod 755 /Applications/AirFloat.app/AirFloat

ここまできたらおきまりの再起動&Respring ですね。

もし再起動後にアプリを立ち上げてすぐに落ちてしまうようなら、実行権限がうまく付与されていないかもしれません。落ち着いてもう一度操作しましょう。

使ってみる

AirFloat の使い方ですが、アプリを立ち上げるだけです。
注意点としては、スリープすると切れてしまうので、スリープしないように設定しておきましょう(アプリ内の設定に、使っているときはスリープしない、という項目があるのですが、こちらはうまく動作しませんでした。環境によるかもしれません)。

アプリを立ち上げると、iTunes などで AirPlay 一覧に登場し、ストリーミングできます。お疲れ様でした。

感想

正直重いのでメインで使えるかというと微妙なところです(頻繁に音が途切れる)。issue ではマルチタスクが有効になっていると途切れやすいという報告があったので、マルチタスクを無効にした ipsw を焼くのがよいかもしれません。

ここまで紹介しておいて身も蓋もない話ですが、適当な Android 端末にAirplayReceiverを入れたほうが快適です。

ただ iPhone3G でも動くというところに価値があると思いますので、どうしても有効活用したかった、という方や暇な方にはお勧めです。特に、昔の iPod や iPhone 対応の Dock スピーカーを生かしたいという方にはかなり向いているんじゃないかなあ、と思います。


そういえばこのために、DoubleTwistの有料版を購入しました(?)。
DoubleTwist は有料の拡張を入れると Android からでも AirPlay で音楽を飛ばせるようになります。昔は微妙だった記憶がありますが、今は普通に使えました。Android から AirPlay したい人は素直にこちらを購入するとよいでしょう。

ちなみに DoubleTwist から AirPlayReceiver に音楽を飛ばすこともできます。Apple 製品が一切介在しない AirPlay とは一体…。


LinuxのCD取り込み事情

つい先日まで CD の取り込みには ExactAudioCopy を使っていました。

特にこいつに不満はなかったんですがメイン PC を Linux にしている現状、 CD を取り込むたびに Windows を立ち上げるのは面倒だと思っていたのでさっさと Linux で取り込める環境を作ってやるつもりでした。

さらに CD のデータはまるっと残しておきたいタイプの人間なので EAC 標準の .cue + .wav という形式でフルバックアップを取っていたわけですが、こいつが微妙に扱いにくい。

EAC では分割後にエンコードをかけてくれる機能がなかったのでフルバックアップを取ったあとに DAEMON Tools でマウントしてもう一度エンコード付きで取り込みなどという眠たくなりそうな作業をしていました(実際なった)。

さらに悪いことに元からだいぶ怪しい DAEMON Tools の挙動がアップデートのたびに悪化、実ディスクドライブと競合するなどのひどい状態だったこともあり Linux 環境への移行に拍車がかかりました。


前置きが長くなりましたが実際に用意した環境は以下です。

  • LinuxMint 19
  • k3b
  • 自作バッチファイル

k3b は取り込みから CD 情報の取得、ライティングまで面倒を見てくれるグラフィカルでなかなか充実したソフトです。しかも .cue + .wav での取り込みができるので既存のバックアップをそのまま活用できます。

自作バッチファイルは .cue + .wav から flac でエンコードした曲情報付きのファイルを作るところまで担当します。

またディレクトリ構造は次のようになっています。

~/ミュージック
├── CD_backup
│   ├── 何かしらのCDデータ(.cue + .wav)
│   └── cdsplit <- これが自作バッチファイル
└── 何かしらのCDデータ(.flac) <- 自動で出力したい

k3b のインストール

たしかこちらのブログを参考にさせていただきました。

$ sudo apt install k3b k3b-i18n language-pack-kde-ja kde-config-cddb

バッチファイルの用意

shnsplit と cuetag を使います。

$ sudo apt install shntool cuetools
#!/bin/bash

DEST=../../$(basename "$(pwd)")
CUENAME=`find *.cue | head -n 1`
WAVNAME=`find *.wav | head -n 1`

shnsplit -f "$CUENAME" -o "flac flac -6 -o %f -" -t "%n %t - %p" "$WAVNAME"
cuetag "$CUENAME" *.flac
mkdir "$DEST"
mv *.flac "$DEST"

忘れずに実行権限をつけておきます。

$ chmod +x cdsplit

シェルスクリプトがあまり得意ではないので間違ってもキレイなコードにはなっていないと思いますが今回は動けば良しとします。

動作としては CD_backup 以下のあるディレクトリで ../cdsplit を実行したときにミュージック以下へ同名のディレクトリを作成してエンコードしたファイルを流し込みます。

他に特に明記すべきことはなさそうですが shnsplit の行では .wav ファイルの分割とエンコード、 cuetag の行では曲情報の付与を行っています。

エンコード

上記のディレクトリ構造に従ってバックアップファイルを置いたディレクトリで実行します。

~/ミュージック/CD_backup/何かしらのCDデータ$ ../cdsplit

これで今までどおり CD のバックアップとエンコードをする環境が構築できました。あとは適当にスマホや音楽プレイヤーにぶち込みます。


Mojaveのインストールメディアを作る

先日中古で MacBookPro を購入しました。非 Retina の 2012 年モデルですが手持ちの SSD とメモリを増設したのでそこそこ快適です。
いま持ち運び用で使っている使っているタブレットは性能も悪くなくて気に入っているんですが、11 インチなので持ち運びには良くてもコーディング向きではなかったので期待しています。

ところで、Mac を買ったからには万一の状態に備えてインストールメディアを用意しておきたいものです。最初のセットアップに関しては(なぜか)HighSierra のインストールメディアを持っていたので特に困りませんでしたが、できれば最新の macOS があれば楽なので Mojave のメディアを作っておこうと思います。

AppStoreの仕様が変わったらしい

さて、現状 MacBook には Mojave が入ってますがメディアを作るには再度インストーラをダウンロードする必要があります。
しかし AppStore で Mojave をダウンロードしようとしてもアップデート画面に飛ばされるばかりでインストールできません。また、購入済みの仕様が Mojave から変わってしまったようで Mojave どころかそれ以前のバージョンも再ダウンロードできなくなってしまいました。

ちょっと調べると mas-cli というコマンドラインツールからプロダクト ID で直接インストールできる方法が見つかったりしますが、残念ながら Mojave のプロダクト ID を調べられなかったのでこれも諦めました。

Mojave Patcherを使う

じゃあ二度と再インストールできないんだ… と言うのは早いです。
今回インストーラをダウンロードするために Mojave Patcher というものを使います。

このソフトは本来サポートが打ち切られた Mac に新しい macOS を入れてやろうというプロジェクトらしいですが、フルバージョンのインストーラをダウンロードする機能がついています。これを使うことによって細かいことを考えなくてもインストーラをダウンロードできます。

ダウンロード

こちらのサイトから Mojave Patcher をダウンロードします。あとは dmg を展開して適当な場所に移動します。

インストーラのダウンロード

起動するとこの Mac はサポートされたデバイスですと言われますが、適当に無視してメニューバーから Tools->Download macOS Mojave を選択します。あとはメッセージにしたがって保存場所を指定すればダウンロードされます。インストールメディアを作る時のために Application へ入れておくのが楽です。5GB くらいあるのでちゃんとした回線を使いましょう。

インストールメディアを作成

Apple公式のページがあります。ここを参考にすれば問題無いと思います。

おわりに

今回使った Mojave Patcher ですが HighSierra 版もあります。古いバージョンのインストーラが欲しくなることもあるかもしれないので、そういった時には役立ちそうです。


ブログを開設しました

こんにちは。ねぎとろです。

去年以降プロコンや LT 会に参加するなど急激に外部との接触が増えたこともあり、Twitter 以外にも何か反応を示す場所が必要かと思いました。

実際にはすぐさま何か投稿しようとは考えていませんが、イベントへの参加などにあたり好きな内容をさっとポストできる場所があるというのは重要だと思っています。

何かの機会に投稿したときはよろしくお願いします。