Windows Phone Lumia 525にAndroidをインストールする方法

 

Androidのスマートフォンが壊れたため、昔使っていたWindows Phone(以下WP)に変えたのですがアプリが少ないため使い勝手が良くありません。またWindows 10にはアップグレードできないためセキュリティ上のリスクもあります。そこでLumia 525にAndroidを入れてみることにしました。もちろんMSは正式に認めていませんが非公式な開発プロジェクトがあります。作業環境はWindows PCで進めていきます。ADBツールはLinuxでも使えますがWP internalsなどのそれ以外のツールはWindows PCが必要になるからです。

注意:SIMを認識しないためモバイル機能は使えません。ほかにもカメラやヘッドフォンなどが使えません。サイト(Unofficial LineageOS 13.0 for Lumia 52X & 720)を参照。

必要なファイル

Optional

インストール手順

1.WPのバックアップ

WPのSettingsBackupでバックアップを取ります。

2.各種ツールのインストール

  • ADB Installer

PCからAndroidにアクセスするツールです。実行ファイルをクリックするとターミナル画面でオプションが表示します。すべてYにしてインストールします。

  • WP internals

WPにアクセスするツールです。デスクトップにinstall等の作業用のディレクトリを作りその上にWP internalsのディレクトリを作成して展開します。

  • Windows Device Recovery Tool

公式ROMをリカバリしたりコマンドツールがあります。

3.WPのROMをクリーンインストール

アップグレードした状態で作業行うと不具合の可能性があるのでクリーンインストールします。SetingsExtras & infoManufacturer Nameを参照しLumiaFirmwareのサイトからプロダクトコードに該当する拡張子ffuのファームウェアをダウンロードします。

WPをusbケーブルでWindows PCに接続します。

WP internalsを立ち上げます。

サイドパネルのPlatformFlashをクリックするとFlash original FFUに移動します。

ダウンロードしたLumiaのROMのFFUイメージを指定してフラッシュします。(リブートします)

リブート後、初期化した状態なので基本情報を入力します。

4.ブートローダのアンロック

WPが工場出荷状態になったところで、WP internalsのサイドパネルからUnlockUnlock Bootloaderをクリックします。Flash-modeに切り替えメッセイージがでるのでOKボタンを押します。(リブートしてFlash-modeになります)

WP internalsのディレクトリにSBL3 engineering archiveHEX loadersのファイルアーカイブをコピーしてディレクトリをつけて展開します。

もう一度WP internalsに戻りUnlockUnlock Bootloaderをクリックします。

SBL3 engineering archiveHEX loadersFFUイメージファイルを指定してフラッシュします。

5.LK bootloaderのインスール

インストール用のディレクトリ上にLK bootloaderのディレクトリを作成して展開します。Shift+右クリックでメニューを開き管理者権限でuefi2lk.cmd実行します。

成功するとWPがリブートしてTwrp画面が現れます。

ストレージモードになっているので、LineageOS 13.0サイトでダウンロードしたカスタムリカバリ、twrp_fame_20xxxxxx.imgrecovery.imgにリネームしてWPのdownloadにコピーします。そしてTwrpのInstall>Install Image>Recovary でフラッシュします。

フラッシュが終わったらいったん電源を落として電源ボタンと+ボリュームを同時押しで再起動します。

6.Androidのファームウェアのインストール

TwrpからWIPE>Advanceed Wipeに移動して次のパーティションをフォーマットします。

  • Dalvik / ART Cache
  • system
  • cache
  • Data Internal Storage

次にAdvanced>ADB sideloadに移動して次の項目にチェックします。そしてスライドさせて実行します。

  • Wipe Dalvik Cache
  • Wipe Cache

PCのエクスプローラでAndroidのファームウェア、lineage OSをc:\adbにコピーし、c:\adbディレクトリをShift+右クリックしてCMD画面を開きます。そして次のコマンドを実行します。

adb sideload lineage-13.0-20xxxxxx-UNOFFICIAL-fame.zip

転送が終わったらWPをリブートします。しばらくするとAndroidの設定画面が現れます。

以上でWPにAndroidをインストールする作業は終わりです。

 

Optional: Gappsを追加

Androidが動くようになったのですが、systemパーティションの容量不足からGappsがインストールできません。そこでパーティションの容量を大きくしてGappsをインストールできるようにしてみます。

警告:かなり危険な作業です

AndroidをDeveloper optionsを追加してPCに接続したときにストレージモードが使えるようにします。(Settings>About>Build numberの項を連打するとオンになります)

AndroidをusbケーブルでPCにつなぎます。つぎのファイルをAndroidのSDにコピーします。

  • lineage-13.0-20xxxxxx-UNOFFICIAL-fame.zip
  • open_gapps-arm-6.0-pico-20xxxxxx.zip
  • SuperSU-v2.82-20xxxxxxxxxx.zip (Optional)
  • Repartition script Redmi 1s_1.2GB system space.zip
  • parted

AndroidをリブートしてTwrpリカバリを起動します。

Advanced>File manager>Browseparted/sbinにコピーしてファイルモードを755にします。つぎにInstallに移動してRepartition script Redmi 1s_1.2GB system space.zipをインストールします。エラーが出なければ再パーティション化は完了です。

次にWipe>Advanceed Wipeに移動して、次のパティションをフォーマットします。

  • Dalvik / ART Cache
  • system
  • cache
  • Data
  • Internal Storage

そしてInstallに移動して、Lineage OSopen-GappsSuperSU(Optional)をインストールし再起動すれば完了です。

Google Playからインストールしてみます。PCのWebブラウザからだとdevice名が表示されます。

 

References:

Archives:

NASにPLEXメディアサーバーをインストールする

NetGearのNAS(ReadyNAS 102)のDLNAが標準で使えるようになっていますが使い勝手がよくありません。さらにAppsのNero MediaHomeはだいぶ使い勝手は良くなっているもののメディアファイルの表示が今一つです。そこで定評のあるPLEXメディアサーバーインストールしてみたいと思います。インストールはPLEXのサイトからダウンロードしてNASのAppsのダッシュボードでアップロードするだけです。もしアップロードに失敗するときはNASにファイルを移動してdpkg -i <ファイル名>でインストールします。ダウンロードするファイルはReadyNAS 102の場合、NetgearのARM 6.xです。

PLEXのインストール

[追記 9/15/2018]

ダッシュボードのAPPSからインストールできるようになりました。

次のリンクから該当するファイルをダウンロードしインストールします。

インストールが成功するとダッシュボードのSystemのAppsにPLEXのアイコンが現れるのでそれをクリックします。設定画面が現れるのでまずSettingsでPLEXにログインします(PLEXのアカウントは事前に登録しておきます)。またDLNAもチェックを入れておきます。

次にNASにあるメディアファイルを登録します。設定画面の左上のホームボタンをクリックしてホームに移動します。Libraries上にマウスを移動すると+が現れるのでそれをクリックします。

メディアファイルのディレクトリを登録するときはMoviesとTV Showsと分けます。また、TV Showsに登録するファイルはS01E01のようにシーズンをS01、エピソードE01にようにファイル名につけて割り振ります。またTV Showsに登録する場合、タイトルを階層化したディレクトリにすると自動振り分けができません。

メディアの再生

PLEX専用アプリが各プラットフォームに用意されているのでインストールして使えますが、ブラウザからでも再生できます。AndroidとWindows PhoneでPLEXアプリを使って再生しようとしたところ有料オプションなしにNASに接続できません。そこでDLNAで接続してみたところスムーズに再生できました。

追記(2017年9月29日): Web Proxy(squid)を使っている場合、設定するとメディアサーバにアクセス出来るようになります。

/etc/squid/squid.conf:

acl SSL_ports port 32400 # plex.tv

 

追記:サブタイトルの追加

サブタイトルのファイル名は次のようにつけます。

<Media Name>.en.srt

英語であればen、日本語であればjpのようにアルファベット2文字つけます。ダッシュボードのSUBTITLESで該当するサブタイトルがあればEnglish-SRTExternalと選択できるようになります。

たとえばYoutubeでダウンロードした動画の場合、Transcriptを開いてサブタイトルのテキストをコピーします。それをサブタイトル編集アプリでsrt形式で保存します。

Plex add-on for Kodi

Plexで提供しているプレーヤやWEBブラウザの再生がスムーズでなかったので、KodiにPlexのアドオンをインストールしてみました。

1.PlexKodiConnect

追記:使っているうちにKodiのデーターベースとPlexのシンクロがおかしくなり再生できなくなりました。

stable版(repository.plexkodiconnect-1.0.0.zip)をダウンロードしてAdd-ons->Install from zip fileでインストールします。この時、add-ons from unknown sourcesと警告が出るので、Unknown sourcesを使えるように設定します。

ZIPのインストールが終わったらAdd-ons画面の左上の青のボックスアイコンを押してInstall from repositoryを選択します。

PlexKodiConnect Addonsを選択します。

Video add-onsを選択します。

PlexKodiConnectを選択し、Installします。

PINコードのポップアップが出るのでサイトにブラウザでアクセスして4桁のPINコードを入力します。

ライブラリ表示はできるがビデオが再生されない場合、Add-ons画面からMy add-onsを選択しAllの中からPlexKodiConnectを選択します。

Configure->Customiz PathsReplace Plex UNC paths …をONにします。

 

2.Plex For Kodi (おすすめ)

add-onsのリポジトリからインストールします。

サイトにブラウザでアクセスして4桁のPINコードを入力します。

Troubleshoot

  • 再生が遅い場合

サーバの設定でTranscoder->simultaneous video transcode を 1にします。

References

daloRADIUSを使ったWPA2-Enterprise(EAP-PEAP/MSCHAPv2)の構築

以前にEAP-TLSを使ったWPA2-Enterprise環境を構築したのですが、セキュリティは高いもののデジタル証明書をインストールする煩雑さがあります。

今回はユーザー/パスワード認証によるWPA2-Enterprise接続を構築してみます。EAP-PEAP/MSCHAPv2は多くのプラットフォームで広く使われている方式でセキュリティも比較的高く安心です。ユーザー管理にはブラウザから設定できるdaloRADIUSを使います。daloRADIUSはRADIUSサーバの管理用アプリケーションです。

新しいサーバを用意しても良いのですが、今回は普段ファイルサーバーとして使っているNAS(ReadyNAS 102)にインストールしてみます。このNASにはApache2サーバがすでにインストールしてあるので既存のWebサーバを使ってdaloRADIUSが使えるように設定します。

システム図

Users --(WI-FI)-- AP(Chaos Calmer 15.05.1) --(LAN)-- NAS(daloRADIUS, FreeRADIUS, MySQL)

手順

1.NASにMySQLサーバーとFreeRADIUSをインストール

2.Webサーバーの設定

3.NASにdaloRADIUSをインストール

4.ルーターのAPの設定

5.DaloRADIUSに接続

6.ユーザからのWI-FI接続環境

1.NASにMySQLサーバーとFreeRADIUSをインストール

MySQLサーバーはReadNASのコントロールパネルのAppsからインストールできますが、FreeRADIUSはないのでターミナルからsshログインしてaptを使ってインストールします。また各サーバーのモジュールもaptを使ってインストールします。(インストール詳細はdaloRADIUSパッケージのINSTALLファイルに書かれています)

apt-get install php5-common php5-gd php-pear php-db libapache2-mod-php5 php-mail php-mail-mime
apt-get install php5-mysql
apt-get install freeradius freeradius-mysql freeradius-utils

次にデーターベースを作成します。

mysqladmin create radius

パスワードを設定します。

mysql -u root
mysql> update mysql.user set password=password('password') where user = 'root';
mysql> flush privileges;
mysql> exit;

パスワード設定後、mysql入力画面に入るときは-pを指定します。

mysql -u root -p

Enter Password

次にスキーマをインストールします。

mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql

FreeRADIUSを設定します。証明書の作成等は以前の記事に準じます。

/etc/freeradius/eap.conf:

        eap { 
                default_eap_type = peap 
                timer_expire     = 60 
                ignore_unknown_eap_types = no 
                cisco_accounting_username_bug = no 
                max_sessions = ${max_requests} 
                tls { 
                        certdir = ${confdir}/certs 
                        cadir = ${confdir}/certs 
                        private_key_password = whatever 
                        private_key_file = ${certdir}/server.key 
                        certificate_file = ${certdir}/server.pem 
                        CA_file = ${cadir}/ca.pem 
                        dh_file = ${certdir}/dh 
                        random_file = /dev/urandom 
                        CA_path = ${cadir} 
                        cipher_list = "DEFAULT" 
                        make_cert_command = "${certdir}/bootstrap" 
                        ecdh_curve = "prime256v1" 
                        cache { 
                              enable = no 
                              lifetime = 24 # hours 
                              max_entries = 255 
                        } 
                        verify { 
                                tmpdir = /var/tmp/radiusd 
                                client = "/path/to/openssl verify -CApath ${..CA_path} %{TLS-Client-Cert-Filename}" 
                        } 
                        ocsp { 
                              enable = no 
                              override_cert_url = yes 
                              url = "http://127.0.0.1/ocsp/" 
                        } 
                } 
                peap { 
                        default_eap_type = mschapv2 
                        copy_request_to_tunnel = no 
                        use_tunneled_reply = no 
                        virtual_server = "inner-tunnel" 
                } 
                mschapv2 { 
                        send_error = no 
                } 
        }

次のコメントを外します。

/etc/freeradius/radiusd.conf:

$INCLUDE sql.conf
$INCLUDE sql/mysql/counter.conf

mysqlのログイン/パスワードを編集します。

/etc/freeradius/sql.conf:

login = "root"
password = "password"

またreadclients = yesのコメントを外します。

sites設定を編集します。

rm /etc/freeradius/sites-enabled/*
cp /etc/freeradius/sites-available/default /etc/freeradius/sites-available/default.org
cp /etc/freeradius/sites-available/inner-tunnel /etc/freeradius/sites-available/inner-tunnel.org
ln -s /etc/freeradius/sites-available/default /etc/freeradius/sites-enabled/default
ln -s /etc/freeradius/sites-available/inner-tunnel /etc/freeradius/sites-enabled/inner-tunnel

/etc/freeradius/sites-enabled/default:

authorize { 
        preprocess 
        chap 
        mschap 
        digest 
        suffix 
        eap { 
                ok = return 
        } 
        sql 
        expiration 
        logintime 
        pap 
} 
authenticate { 
        Auth-Type PAP { 
                pap 
        } 
        Auth-Type CHAP { 
                chap 
        } 
        Auth-Type MS-CHAP { 
                mschap 
        } 
        digest 
        unix 
        eap 
} 
preacct { 
        preprocess 
        acct_unique 
        suffix 
        files 
} 
accounting { 
        detail 
        sql 
        exec 
        attr_filter.accounting_response 
} 
session { 
        radutmp 
        sql 
} 
post-auth { 
        sql 
        exec 
        Post-Auth-Type REJECT { 
                sql
                attr_filter.access_reject 
        } 
} 
pre-proxy { 
} 
post-proxy { 
        eap 
}

/etc/freeradius/sites-enabled/inner-tunnel:

セクションauthorizesqlのコメントを外します。

/etc/freeradius/modules/mschap:

mschap { 
        use_mppe = yes 
        require_encryption = yes 
        require_strong = yes 
        with_ntdomain_hack = yes 
}

/etc/freeradius/clients.conf:(daloRADIUSでも設定できます)

client 192.168.1.0/24 {  
        secret    = whatever  
        shortname = localAP 
}

FreeRADUSを再起動します。

systemctl restart freeradius.service

2.Webサーバーの設定

cp /etc/apache2/sites-available/default /etc/apache2/sites-enabled/001-default

ポート80はNASの管理用に使っているので新たに001-defaultファイルを編集してポート81(もしくは使っていないポート)に変更します。

/etc/apache2/sites-enabled/001-default:

<VirtualHost *:81> 
        ServerAdmin webmaster@localhost 
        DocumentRoot /var/www 
        ErrorLog ${APACHE_LOG_DIR}/error.log 
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

/etc/apache2/ports.conf:

NameVirtualHost *:80 
Listen 80 
 
NameVirtualHost *:81 
Listen 81 
 
<IfModule mod_ssl.c> 
    NameVirtualHost *:443 
    Listen 443 
</IfModule> 
 
<IfModule mod_gnutls.c> 
    Listen 443 
</IfModule> 

Apache2を再起動してテストしてみます。

systemctl restart apache2.service

http://<NAS IP Address>:81でアクセスして設定が正しければ「It works!」とブラウザが表示します。

3.NASにdaloRADIUSをインストール

最新バージョンのdaloradius-0.9-9.tar.gzをダウンロードします。

https://sourceforge.net/projects/daloradius/

または

https://github.com/lirantal/daloradius

/var/wwwに展開しディレクトリ名をdaloradiusに変更します。

パーミッションを変更します。

chown -R www-data:www-data /var/www/daloradius
chmod 644 /var/www/daloradius/library/daloradius.conf.php

daloRADIUSのスキーマをインストールします。

cd /var/www
 mysql -u root -p radius < daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

/var/www/daloradius/library/daloradius.conf.phpのユーザー/パスワード編集してデータベースに接続できるようにします。

$configValues['CONFIG_DB_USER'] = 'root';
$configValues['CONFIG_DB_PASS'] = 'password';
$configValues['CONFIG_DB_NAME'] = 'radius';

4.ルーターのAPの設定(OpenWrtのダッシュボードで編集します)

/etc/config/wireless:

config wifi-iface
 option device 'radio0'
 option mode 'ap'
 option ssid 'SSID'
 option network 'lan'
 option encryption 'wpa2+ccmp'
 option auth_server '<NAS IP Address>'
 option auth_secret 'whatever'
 option acct_server '<NAS IP Address>'
 option acct_secret 'whatever'

5. DaloRADIUSに接続

<NAS IP Address>:81/daloradiusにアクセスします。

 

初期設定は次のとおりです。

Username: administrator
Password: radius

ユーザー登録します。

ManagementタブからNew User選択してユーザー名/パスワード(Password Type: Cleartext-Password)を入力します。

 

6.ユーザーからのWI-FI接続環境

Linux

詳細画面でユーザー名とパスワードを入れて接続します。

Windows 7、Windows 10(Windows 10はセキュリティアラート画面はなし)

ユーザー名とパスワードを入れて接続します。

警告画面がでますが、Connect(接続)ボタンを押します。

接続できない場合はプロファイルを作成します。SSIDと同じ名前をつけます。

 

プロパティの詳細を開きます。

 

Settingsボタンを押します。

 

configureを押しUser authenticationにします。

チェックを外します。

 

Chromebook(Androidもほぼ同じ)

Server CA certificateは”Do not check“、選択できない場合はそのままにします。EAPはPEAPを選択し、Identity(ユーザー名)、パスワードを入れます。

MacOS

ユーザー名とパスワードのみです。ポップアップで認証を求められたらAdmin権限で認証してください。

Windows Phone

ユーザ名とパスワードを入れ実行ボタンを押すと、”Accept certificate and connect?”というメッセージがでるので”Accept(承認)”ボタンをクリックします。

7. Counter moduleの追加

daloRADIUS Virtual Machineでデモをみていたら、期限付きアカウントをリースができるようになってたので使えるように調整してみました。dalaradiusのパッケージのcontribを参考につけ加えます。

/etc/freeradius/sites-enabled/default:

# enabling the sql counter modules (time-based)
 dailycounter
 monthlycounter
 weeklycounter
 quaterlycounter
 yearlycounter
 noresetcounter
 accessperiod
 # chillispot data/volume type counters
 counterChilliSpotMaxTotalOctetsDaily
 counterChilliSpotMaxTotalOctetsWeekly
 counterChilliSpotMaxTotalOctetsMonthly
 counterChilliSpotMaxTotalOctetsQuarterly
 counterChilliSpotMaxTotalOctetsYearly
 counterChilliSpotMaxTotalOctetsAll
 # input octets limitation
 counterChilliSpotMaxInputOctetsDaily
 counterChilliSpotMaxInputOctetsWeekly
 counterChilliSpotMaxInputOctetsMonthly
 counterChilliSpotMaxInputOctetsQuarterly
 counterChilliSpotMaxInputOctetsYearly
 counterChilliSpotMaxInputOctetsAll
 # output octets limitation
 counterChilliSpotMaxOutputOctetsDaily
 counterChilliSpotMaxOutputOctetsWeekly
 counterChilliSpotMaxOutputOctetsMonthly
 counterChilliSpotMaxOutputOctetsQuarterly
 counterChilliSpotMaxOutputOctetsYearly
 counterChilliSpotMaxOutputOctetsAll

/etc/freeradius/sql/mysql/counter.conf:

mv /etc/freeradius/sql/mysql/counter.conf /etc/freeradius/sql/mysql/counter.conf.org
cp daloradius/contrib/configs/freeradius-2.1.8/cfg1/raddbsql/mysql/counter.conf /etc/freeradius/sql/mysql/counter.conf

sqlモジュールはcounter.confに追加していけば使えるようです。

freeradiusを再起動します。

まとめ

daloRADIUSの導入でWPA2-Enterpriseのユーザー管理が簡単になりました。daloRADIUSにはradius向けに様々なオプションがありユーザー認証だけでなく時間を区切ってアクセスを管理したり、料金プランを作ることもできます。WindowsではCA証明書をインストールしていないため警告が表示されますがサーバー偽装に対する警告です。CA証明書をインストールすればより安全な接続になります。WPA2-Personalの共有パスワードに不安があるとき、またある程度の規模でWI-FIネットワークを構築したい場合にはこのシステムが役に立つことでしょう。