2015年8月15日土曜日

OnePlus 2 買ってみた

久々にスマホ変えたい病が発症して、一番興味のあるOneplus2買ってみた。
いろいろ失敗もあるので、もし買う人がいたら参考に。

OnePlus 2 site ;)


まず。Dual SIMについて。

Oneplus 2には3つのハードウェアバージョンが存在しているらしく。それぞれが異なるリージョンで
利用されることを念頭においているらしい。確認されいるバージョンは

A2001
A2003
A2005

の3種類。地域としては、EU/Asia、Notrh America、Chinaというように3つの地域で分かれている。
どのモデルIDがどれに相当するのかは不明ですが。自分のOneplus 2はChina版だと思われ
A2001のモデル名が確認できます。

さてここからはOneplusのフォーラムからの引用になるんだけど。

EU/Asia

GSM: 850, 900, 1800, 1900MHz
WCDMA: Bands 1/2/5/8
FDD-LTE: Bands 1/3/5/7/8/20
TDD-LTE: Bands 38/40/41

3 and 20 are used almost all over Europe, but not at all in North America. Band 8, although available in both versions, is used in Europe and India but is seeing increasing adoption worldwide.

North America

GSM: 850, 900, 1800, 1900MHz
WCDMA: Bands 1/2/4/5/8
FDD-LTE: Bands 1/2/4/5/7/8/12/17

For NA, the removal of bands 3 & 20 allows us to add all the GSM bands you’ll need.

China

GSM: 850, 900, 1800, 1900MHz
WCDMA: 1/2/5/8
TD-SCDMA: 34/39
TDD-LTE: 38/39/40/41
FDD-LTE: 1/3/7

The Chinese version will have very limited 4G compatibility in Europe and North America. More importantly, it only has one IMEI meaning you will not have dual-SIM capability outside of China. If you like having dual SIMs, do not buy the Chinese version.

ということみたいですな。そこで一番ポイントなのが、IMEIの取り扱い。
中国版では2スロット存在していてもIMEIは1つしか登録されておらず。*#06#で確認しても
同じIMEIが2つ表示されるし、外箱も1つしかIMEIは記載されていない。

https://forums.oneplus.net/threads/oneplus-2-regional-versions-explained.338780/

A2005と思われる端末の箱がうつる動画をYoutubeで発見したが、拡大してみるとIMEIが2つ記載
されていそうな感じなので。中国版の制限としてDualでの運用は無理ぽい。

Dualスタンバイ(DSDSらしい)に興味がある人は中国版は避けること。ちなみにoppomartは高確率で
というか、中国版です。

Dualで使うことあるかと?うーん、ぶっちゃけないかなと思う。なのでサポートしている周波数的なものを
見てかうので正解かな?

Google+のOnePlusのForumでも発言がありましたけど。EU/Asiaの国際版とか北米版は、Inviteが必要みたいですね。ebayとかにInviteコード出品してる人もいるみたいです。いちおう待ち行列に入ってるみたいなので、まつかな。。といいつつebay突入してみたりしてw

この情報はあくまで自分が探した情報で、元ネタの保証もないので、購入する場合は自己責任で
よろしく。

2015年7月25日土曜日

Android 5.1 Lollipop SELinux policy injection for system apps.

というわけで久々のエントリですが。完全に自分用。
忘れっぽい自分のために。。

AndroidもlollipopになってからSELinuxが完全にEnforceになったようで、様々なデバイスやファイルに個別の権限を設定し運用されることになりました。たとえば、よくapkのなかにarmの実行形式のバイナリをrawファイルとしておいて、Runtime.execするようなアプリがありますけど、そういったものは完全にブロックされます。アプリ内臓のファイルは実行可能には基本的にはなりません(chmod云々の問題でなくSELinuxでの制御対象)。同様にいままでアプリに許可されていたデバイスへのアクセス権限もpermission以外にSELinuxによりkernelレベルで制御されます。/dev/uinputなんかもネットではいろいろ話題になってますね。JNIからアクセスできねーwwとか。。今回は、そういったエントリです。

最近MTKベースのrootとった端末で遊んでますが、lollipopからのSELinuxでいろんな制限がでてきましたね。いままで動いていたきわどいアプリとか動かないなんてことはふつうにありますね。

自分の体験した例では、/dev/uinputへのアクセスがアプリから完全にできなくなったことで、/dev/uinputを使うようなアプリの実行ができなくなったことです。いわゆる、仮想マウスとか、仮想キーボードを作ってリモートコントロールする、VNCなんかのアプリはこの影響を受けてると思います。

簡単な解決方法があればいいのですが。。いままでのところSELinuxのポリシーをいじるしかないという結論で、その辺を調査してみたということです。

まず、/dev/uinputの状態を見てみましょう。Zオプションでタグが見れます。

ls -lZ /dev/uinput
system net_bt_stack u:object_r:uhid_device:s0 uinput

となってます、基本的にuser=system group=net_bt_stackで、uhid_deviceドメインに属してます。

デバイスがどんなタグをもつかueventd.rcをみたらわかりますが、端末によってはあとから、inir.rcなどでchownとかしてますので、多少注意が必要です。

さて、オーナーがsystemなので、きほんてきにはsystemのユーザのcontextを参照するわけですが。seapp_contextsファイルがだいたい端末のルートにあるので、参照してみます。


user=system domain=system_app type=system_data_file

という感じでsystem_appのドメインを参照するようです。さて、実際のシステムはAOSPにあるようなSELinuxのポリシー以外にも独自のポリシーを適用していることが多く、実際の端末の状態を確認しないと、どんなポリシーが対象のアクセスを制御しているのかわからないことが多いです。なのでAOSPのソースのなかのSELinuxのポリシーだけを見てもダメってことです。もちろんターゲットデバイスのソース一式持ってるなら話は別ですけど。。

実際の端末のポリシーがどんなものかを確認するには。setoolsが必要です。setoolsのAndroid版を開発してくれている方がいますので。githubから落としてndk-buildしてバイナリを作成します。

https://github.com/xmikos/setools-android

非常に使えるツールです。クローンしたら、ディレクトリのトップでndk-buildするだけで、幾つかのCPUアーキテクチャに対応したバイナリが生成されます。詳しいことはgithubのページを参照してください。

git clone https://github.com/xmikos/setools-android.git
cd setools-android
ndk-build

できあがった3つのバイナリを端末に転送してpermissionを実行可能に。

adb push sepolicy-inject /sdcard/
adb push sesearch /sdcard/
adb push seinfo /sdcard/
adb shell
su
cd /data/local/tmp/
cp /sdcard/se* .
chmod 755 ./se*
それから、現在のsystem_appのドメインに定義されているポリシーをダンプしてみます。

/data/local/tmp/sesearch --allow | grep system_app
これで、system_appに許可されているポリシーが表示されます。この中にさきほどlsで確認した。uhid_deviceのアクセス許可が記述されていなければ、アクセスは拒否されます。
あ、ポリシーファイルはルートにあるsepolicyというファイルです。setools-andoidは特に指定しなければこのルートにあるsepolicyをデフォルトで参照してくれます。

さてここからが本番、今回はsystem_appドメインにポリシー追加したいと思いますが、appdomainあたりに追加するには注意が必要です。そもそもいろんなポリシーが不許可なdomainですので。今回追加するポリシーは/dev/uinputへのアクセス許可ですので。

allow system_app uhid_device:chr_file rw_file_perms;
とい感じになります。rw_file_permsはマクロで定義されたパラメータで幾つかのシステムコールの発行が可能になります。気になる人はglobal_macrosの定義を読んでみるといいでしょう。

さてこのポリシーを実行状態の端末に追加するにはsepolicy-injectコマンドを使います。ただし、先ほどのマクロ指定はつかえませんので、ちゃんとaccess_vectorsにあるキーワードをつかって指定しなくてはなりません。rw_file_permsは展開すると。

ioctl read write getattr lock append open
という感じになります。これを指定しますが、この新しいポリシー(TE)を含むポリシーファイルを作成して、それからそれを適用するという感じでやってみます。


cd /data/local/tmp
./sepolicy-inject -s system_app -t uhid_device -c chr_file  ¥
    -p ioctl,read,write,getattr,lock,append,open ¥
    -P /supolicy -o ./supolicy.new
カレントに supolicy.new が生成されればOKです。確認は上記のsesearchコマンドでやります。
./susearch -allow ./supolicy.new | grep system_app | grep uhid_device
追加したものが表示されればOK。次に適用です。/dev/uinputにアクセスするアプリもインストールしておいてください。
cd /
mount -o rw,remount /
cp /data/local/tmp/supolicy.new ./supolicy
sync
load_policy ./supolicy
am restart
最後にam restartすることでsystem_appドメインのアプリに対して、dex2oatなどが再度走ります。それで/data/data/あたりがリフレッシュされて利用可能になる感じ?。よくしらべてないのでカンですが。そんなイメージw

ちなみに端末を再起動してしまうと、sepolicyはもとにもどってしまうので、上記の方法で試してます。sepolicyを入れ替えるのが本来の方法でしょうけど。。ま、確認できればいいので。アプリが/dev/uinputにアクセスできれば仮想キーボードとか作成されますので。リモートからキー入力ができたりと、べんりなvncとかうごきますね。

今回の記事はかなーり適当。ソースをよんで裏取りとかしてませんので。もしやってみるという人は参考程度にね。

あ、ちなみに動かしたいアプリのAndroidManifestのpermissionとかちゃーんとしてないともちろんダメっす。

では。。




2015年2月13日金曜日

ALO Audio The International + Optical Edition レビュー

結局ぽちってしまいましたw。FedExで3日でとどきましたね。
早いです。

画像は面倒なんで撮影してないですが、いままでのThe Internationalと同じ形ですw。

肝心なのは音ということで。。

比較対象は究極の3段ともいうべき

iPod classic + Cypherlabs Algorhytm Solo -db + ALO Audio RX MK3+

です。IEMはFitEar334MHです。

まず、エージングもしてない状態の判断ということを断っておいて。。
早速接続です。AK100を久々に充電して、iTunesのフォルダから適当なALACと、HDTracks
で購入したハイレゾをフォルダに放り込んだら比較開始。基本的にiPodからはハイレゾが
でないので、それ以外の音源での比較ですが。。

聞いてすぐにわかるのはThe International+Optical Editionの解像度の高さですね。
ESSの最新DACの威力なんでしょうか?
これはCypherlabsのDACより明らかに上です。空間表現よりは音像をたてて、はっきり
くっきりのイメージ。これに比べると3段の方は、ちょっと解像度的にはあまいものの、
大きい音と小さい音の差を丁寧に描いて空気感を演出してるように感じます。

これは好みの問題とおもいますが、空気感や雰囲気は若干3段に分がある感じですが
The International + OEもエージングが進めばわかりません。現時点で解像度では勝っている
わけなので期待できますね。解像度の高さはハイレゾでも有効で、AK100単体のときより
明らかに音数や音源位置などが明確になってます。

かなりレベルの高い製品になっていると思います。ロックやPOPなどの系統にかなりマッチ
する感じです。まぁ、3段もレベルはかなり高いのですが、それにかけるコストを考えると、
いいIEMを使うって前提でならThe International + OEの勝ちかな?

ちなみに3段では接続のケーブルでかなり印象が変化します。自分は3段の運用時には
iPodとの接続をALO SXC24 USB-30PIN使ってますが、これをDAC付属のケーブルにすると
一気に甘くなります。20-30回短い間隔でとっかえて試したので、プラセボだったとしても
そういう傾向があるんだと思います(自分にとって)。

対するThe Internaional + OEは付属のopticalケーブルでAK100に直でつないだだけです。
それでこのレベルはかなりいいかと。。

あと、肝心なことですが、3段よりぜんぜん軽いですw。持ち上げた感じは半分程度に感じますね。
明日の通勤から使おうと思いますけど、少しカバンが軽くなるのはいいことです。

ちなみに自分は旭化成のDACチップが結構好きで、CypherlabsのDAC以外にも自宅の
オーディオシステムもAK搭載のMY-D3000使ってたりします。32bitのDACはやっぱり全体的に
解像度には余裕が感じられていいですね。

というわけで、簡単なレビューでした。

あ、AK100といえば去年発売した、The Glove A1とか専用のDAC内臓ポタアンとかも
そそられますね。The Glove A1はノイズ問題であれですけど、対応しくれるらしいし。
The Internaional + OEと同じくESSのDACチップ搭載ですし、比較してみたいですねぇw。

それではまた。




2015年2月8日日曜日

ALO Audio The International +Optical Edition 発売!

お久しぶりです。

ALO Audioから新しいポータブルアンプでましたね!。以前の投稿で、The Internationalにオプティカルついたらいいのになぁと書きましたが。まさにそんな感じの製品になってます。


しかも、DACもESSの新しいやつで、Sabre32 ES9018K2Mが搭載されていますね。これはすぺっくてきにはDSDとかもいけるやつです。192khz/24bitも当然いけるでしょうね。ホームページによると、バランスに対応したサーキットデザインらしいですし。期待ですね。日本でいつ発売かわからないですけど、ALOのサイトはPayPalとかもいけますし、International shipもOKみたいですので。頼んでみようかなぁ。

ただ、まだ少し情報がすくなくて、iPod classicみたいな30pinのコネクターをUSB変換して接続できるのかどうかはわからないです、iOSは対応ってことで、lightningからUSB変換したやつを受ける専用の入力がありますね(これは充電端子でした。。)。

まぁ、iPod classicはいまの3段構成のリグで楽しむためのおいといて、つかってないAK100をOpticalで接続するってのがいいかな。3段にくらべて圧倒的に小さくなりますなぁw。これはまた魅力ですが。44.1Khz/16bitがどこまで3段構成に肉薄できるか?

実装面積もそれなりなんで、コスト分のマイナスはあるかもしれないけど、、

まぁ、すごーく興味があります。もし買ったらまたレビューします。

現状は究極的な3段構成なんで、CD音質の音源はかなり満足いく音が出てます。ぶっちゃけ同じ音源でも、AK100のハイレゾよりいい感じなんです。なのでAK100でのハイレゾは出番がなくなったわけですが、今回のアンプはその辺期待って感じです。

ではまた。

現状の3段構成については下記を参照。

http://creamsnexus.blogspot.jp/2014/03/cypherlabs-algorythm-solo-db-alo-audio.html