Android電気メガネ

Nreal Streaming Boxを買った話

Amazonのアソシエイトとして、8796.jp管理日誌は適格販売により収入を得ています。

ソフトウェアの中身を確認

話せば長くなるんですが、先日の予想通りOSはAndroidです。ハードウェア的に電源ボタンしか操作できるところがないので遊びにくいと思ったんですが、PCとUSBケーブルで接続して普通にadbで繋がりました。何の苦もなくadb shellで入ってごそごそできます。流石にroot権限まではなかったのでとりあえず触れるところだけ見てみましたがsdkが29なのでAndroid 10ですね。

以下がgetpropした内容の抜粋です。

[ro.vendor.build.date]: [Fri Apr  8 11:23:44 CST 2022]
[ro.vendor.build.date.utc]: [1649388224]
[ro.vendor.build.fingerprint]: [Android/early/early:10/QQ1D.200105.002/EARLY-202204081010-100:user/release-keys]
[ro.vendor.build.id]: [QQ1D.200105.002]
[ro.vendor.build.security_patch]: [2020-03-05]
[ro.vendor.build.tags]: [release-keys]
[ro.vendor.build.type]: [user]
[ro.vendor.build.version.incremental]: [EARLY-202204081010-100]
[ro.vendor.build.version.release]: [10]
[ro.vendor.build.version.sdk]: [29]
[ro.vendor.nrdp.modelgroup]: [NEXUSPLAYERFUGU]
[ro.vendor.product.cpu.abilist]: [armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist64]: []
[ro.vendor.sdkversion]: [RK3229_ANDROID10.0_BOX_V1.0]
[ro.vendor.storagemedia]: [emmc]
[ro.vendor.udisk.visible]: [true]
[ro.vndk.version]: [29]

pm list packages -fした結果がこれ

package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/priv-app/DynamicSystemInstallationService/DynamicSystemInstallationService.apk=com.android.dynsystem
package:/system/priv-app/TvSettings/TvSettings.apk=com.android.tv.settings
package:/system/priv-app/MediaProvider/MediaProvider.apk=com.android.providers.media
package:/system/app/NrealLauncher/NrealLauncher.apk=ai.nreal.earlylauncher
package:/system/priv-app/ExternalStorageProvider/ExternalStorageProvider.apk=com.android.externalstorage
package:/system/app/HTMLViewer/HTMLViewer.apk=com.android.htmlviewer
package:/system/app/CompanionDeviceManager/CompanionDeviceManager.apk=com.android.companiondevicemanager
package:/system/priv-app/DownloadProvider/DownloadProvider.apk=com.android.providers.downloads
package:/system/priv-app/TvProvider/TvProvider.apk=com.android.providers.tv
package:/system/priv-app/InProcessNetworkStack/InProcessNetworkStack.apk=com.android.networkstack.inprocess
package:/system/app/PacProcessor/PacProcessor.apk=com.android.pacprocessor
package:/product/app/ModuleMetadata/ModuleMetadata.apk=com.android.modulemetadata
package:/system/app/CertInstaller/CertInstaller.apk=com.android.certinstaller
package:/system/framework/framework-res.apk=android
package:/system/app/FactoryTest/FactoryTest.apk=ai.nreal.earlyfactorytest
package:/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk=com.android.backupconfirm
package:/product/priv-app/Provision/Provision.apk=com.android.provision
package:/system/priv-app/StatementService/StatementService.apk=com.android.statementservice
package:/product/priv-app/SettingsIntelligence/SettingsIntelligence.apk=com.android.settings.intelligence
package:/system/priv-app/SettingsProvider/SettingsProvider.apk=com.android.providers.settings
package:/system/priv-app/SharedStorageBackup/SharedStorageBackup.apk=com.android.sharedstoragebackup
package:/system/app/PrintSpooler/PrintSpooler.apk=com.android.printspooler
package:/product/app/webview/webview.apk=com.android.webview
package:/system/app/SecureElement/SecureElement.apk=com.android.se
package:/system/priv-app/InputDevices/InputDevices.apk=com.android.inputdevices
package:/system/app/WifiDisplay/WifiDisplay.apk=com.rockchip.wfd
package:/system/app/ExtShared/ExtShared.apk=android.ext.shared
package:/system/app/KeyChain/KeyChain.apk=com.android.keychain
package:/system/priv-app/ExtServices/ExtServices.apk=android.ext.services
package:/system/priv-app/LocalTransport/LocalTransport.apk=com.android.localtransport
package:/system/priv-app/PackageInstaller/PackageInstaller.apk=com.android.packageinstaller
package:/system/priv-app/ProxyHandler/ProxyHandler.apk=com.android.proxyhandler
package:/system/priv-app/PlatformNetworkPermissionConfig/PlatformNetworkPermissionConfig.apk=com.android.networkstack.permissionconfig
package:/system/app/CtsShimPrebuilt/CtsShimPrebuilt.apk=com.android.cts.ctsshim
package:/system/priv-app/VpnDialogs/VpnDialogs.apk=com.android.vpndialogs
package:/system/priv-app/Shell/Shell.apk=com.android.shell
package:/system/app/WallpaperBackup/WallpaperBackup.apk=com.android.wallpaperbackup
package:/system/priv-app/UserDictionaryProvider/UserDictionaryProvider.apk=com.android.providers.userdictionary
package:/system/priv-app/FusedLocation/FusedLocation.apk=com.android.location.fused
package:/product/priv-app/SystemUI/SystemUI.apk=com.android.systemui
package:/system/priv-app/PermissionController/PermissionController.apk=com.android.permissioncontroller
package:/system/app/Bluetooth/Bluetooth.apk=com.android.bluetooth
package:/system/priv-app/ContactsProvider/ContactsProvider.apk=com.android.providers.contacts
package:/system/app/PlatformCaptivePortalLogin/PlatformCaptivePortalLogin.apk=com.android.captiveportallogin

ai.nreal.earlylauncherがホームアプリとして起動してNreal Airなどを接続すると見えるやつですね。内部構造はNebulaと似ていてここにNreal Air/Lightのファームウェアなども収納されています。
ブラウザからIPアドレスを指定したときに表示される設定ページとかなんでもかんでも大体はこのランチャーに入っているようです。

そうそう、カーネルバージョンはこれ

Linux version 4.19.101 (nreal@nreal-PowerEdge-R730) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #2 SMP PREEMPT Fri Apr 8 11:22:57 CST 2022

Nreal Streaming BoxのIPアドレスのポート1778をブラウザで表示するとXMLがみえます。以下がその抜粋です。

<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Nreal_O2151F00104</friendlyName>
<manufacturer>Bijie Networks Co.,Ltd</manufacturer>
<manufacturerURL>https://www.bijienetworks.com/</manufacturerURL>
<modelDescription>Bijie Media Renderer Device</modelDescription>
<modelName>Bijie MediaRenderer Device</modelName>
<modelURL>https://www.bijienetworks.com/</modelURL>

キャストやミラーリングの機能はBijie Networks Co.,Ltdという会社のWireless Display SDKを使っているようです?もしかしたらハードウェアごと全部ODMかもしれません。

困ったときのlogcat

logcatでDemoCastClientというなんだかどうにも製品とは思えない名前のタグを見てみたらDLNAとAirPlayは動いてるようですが、GoogleCastは無効にされてるようです。
うーん?isGooglecastEnable()って関数が判定してるんですが、ここだけDLNAとかAirPlayと条件式が違いますね。getpropした中にearly.debug.googlecast.disableが無いのに無効判定されるのはバグじゃなければなんかの不具合で塞いでるのかなあ…

logcat

買うべきかどうか

現状の動作では「まだその時ではない」って感じですね。Nebula対応機器を持っていなくて買うつもりもないけど眼鏡のファームウェアはアップデートしたい人なら買っても良いかもしれませんが…

Androidにものすごく詳しい方は自分でどうにかして遊べるおもちゃにできるかも?

ということで

操作用のリモコンを用意して普通のAndroid搭載メディアプレーヤーとして使えればもうちょっとなんか使い物になったのでは…って気もしますが、バージョンアップで機能の安定化というか高速化してくれたら良いなあ。
メーカーがこれで良しとしてるとちょっと厳しいですね。

正直言ってしまうと、素直にAndroidTVで作って純正Chromecastに対応してくれたら良かったんじゃないか?あっ!

さて、中身がAndroidなのでオープンソースライセンスとかどこかな?どこかなー?ないかなー?

現場からは以上です。

タイトルとURLをコピーしました