というわけでRaspbery Pi2などのマイコンボード向けのWindows 10 IoT Coreが公開されたのでちょっと遊んでみようと思います。
※ちなみにWindows 10 IoT Core以外にもfor mobile devicesやfor industry devicesもあるようです。(今はなさそう)
入手はこのあたりからどうぞ。
とりあえずRaspbery Pi2前提でやっていこうと思います。「Get Started」からRaspbery Pi2を選ぶと手順が表示されるので基本的にその通り進めばOKです。
※ほかにもMinnowBoard MaxとかGalileo、Windows Remote Arduinoなどが今のところ選べます。
日本語化してくれている人がいるのでそちらを見るのが簡単かもです。
必要なファイル一式はConnectのサイトからゲットできますが、リンク辿ってもゲットできない人はこういう感じでEULAに同意してからリンク先みましょう。
OSイメージをmicroSDに書き込むにはBuild 10069以上のWindows 10に含まれるDISMが必要になります。面倒くさいけど注意。microSDに書き込むコマンドはこんな感じです。
dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\\.\PhysicalDriveN /SkipPlatformCheck
flash.ffu は.ffuファイルへのパス、PhysicalDriveN の NはmicroSDのドライブ番号です。1とか2とか自分の環境にあわせて適宜どうぞ。OSふっとばさないように。
基本的にこれだけです。後はRaspbery Pi2に差し込んで起動しましょう。
起動後、初期化走ってしばらくしたらそれっぽい画面が表示されます。
IPアドレスは接続に使うので控えておきましょう。
※ DHCPがない環境とかだとつながらないので、そういう場合はIPアドレスを合わせるかUSBなNICを追加して直接接続してPC側でインターネット共有とかすればいいらしいです。
一緒にダウンロードしたMSIをインストールすればディスカバー用のツールが動くみたいですが、自分の環境だとなんか起動しなかったので普通にPowerShellでつなぎたいと思います。今後も何かとお世話になると思うので覚えておきましょう。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value <ip address or machinename> Enter-pssession -ComputerName <machine-name or IP Address> -Credential Administrator
※対象を信頼するホストに追加してリモートセッションにつないでるだけです。
既定のマシン名は「minwinpc」、Administratorのパスワードは p@ssw0rd です。変えときましょうね。
ちなみにファイル転送用に普通にFTPが(認証なしで)使えますw
※FTPはスタートアップで起動するようなので、不要になったらOffったり必要ですかね。
一応ブラウザでもステータス見えたりリブートなどの簡単な操作が行えます。
リアルタイムでパフォーマンスをみたり、アプリをアップロードしたりコアダンプとったりできます。なんかHTTPだと重い感(電力不足かもしれない)
Windows 10 IoT Coreで使えるコマンドなどはそれなりに制限がありますが、最小限のWindowsなコマンドは普通に使えます。
※ setcomputername でPC名かえたり、net userでパスワード変えたりとか。シャットダウンもshutdown /s /t 0、リブートはshutdown /r /t 0です。
詳細はこちら。
ちなみにデータを送信するだけとか、UIスタックが不要な場合はsetbootoption.exeでheadlessにすればUIスタックを無効にできます。
現状使えるUSBデバイスは以下(Compatible USB Peripheral Devices)のような感じです。(手動でドライバ追加できそうな気もするがどうなんだろう)
- Powered external USB hub
- USB keyboard (wired)
- USB mouse (wired & wireless)
- Wired Xbox 360 controller
- Wireless Xbox 360 controller
- Touchpad (wired & wireless)
- NumPad (wired)
- USB ethernet adapter
- External USB hard disk
- USB flash drive
- USB card reader
普通にWin32なアプリも動くわけですが、APIには制限があります。使ってるAPIがサポートかどうか調べるツールがあるのでそちらで調べてみてください。
またUniversal Appsの場合は以下(Universal APIs not functional in Windows 10 IoT Core at this time)のAPIが使えないようです。(今日時点)
Windows.ApplicationModel.Appointments.Appointment Windows.ApplicationModel.Appointments.AppointmentInvitee Windows.ApplicationModel.Appointments.AppointmentManager Windows.ApplicationModel.Appointments.AppointmentOrganizer Windows.ApplicationModel.Appointments.AppointmentProperties Windows.ApplicationModel.Appointments.AppointmentRecurrence Windows.ApplicationModel.Appointments.AppointmentsProvider.AppointmentsProviderLaunchActionVerbs Windows.ApplicationModel.Appointments.FindAppointmentsOptions Windows.ApplicationModel.Background.AlarmApplicationManager Windows.ApplicationModel.Background.AppointmentStoreNotificationTrigger Windows.ApplicationModel.Background.CachedFileUpdaterTrigger Windows.ApplicationModel.Background.ChatMessageNotificationTrigger Windows.ApplicationModel.Background.CommunicationBlockingAppSetAsActiveTrigger Windows.ApplicationModel.Background.ContactStoreNotificationTrigger Windows.ApplicationModel.Background.EmailStoreNotificationTrigger Windows.ApplicationModel.Background.NetworkOperatorHotspotAuthenticationTrigger Windows.ApplicationModel.Background.PhoneTrigger Windows.ApplicationModel.Background.PushNotificationTrigger Windows.ApplicationModel.Background.ToastNotificationActionTrigger Windows.ApplicationModel.Background.ToastNotificationHistoryChangedTrigger Windows.ApplicationModel.Calls.PhoneCallHistoryEntry Windows.ApplicationModel.Calls.PhoneCallHistoryEntryAddress Windows.ApplicationModel.Calls.PhoneCallHistoryEntryQueryOptions Windows.ApplicationModel.Calls.PhoneCallHistoryManager Windows.ApplicationModel.Calls.PhoneCallManager Windows.ApplicationModel.Calls.PhoneDialOptions Windows.ApplicationModel.Calls.PhoneLine Windows.ApplicationModel.Calls.VideoCapabilitiesManager Windows.ApplicationModel.Chat.ChatCapabilitiesManager Windows.ApplicationModel.Chat.ChatConversationThreadingInfo Windows.ApplicationModel.Chat.ChatMessage Windows.ApplicationModel.Chat.ChatMessageAttachment Windows.ApplicationModel.Chat.ChatMessageManager Windows.ApplicationModel.Chat.ChatQueryOptions Windows.ApplicationModel.Chat.ChatRecipientDeliveryInfo Windows.ApplicationModel.Chat.RcsManager Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingAccessManager Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingAppManager Windows.ApplicationModel.Contacts.Contact Windows.ApplicationModel.Contacts.ContactAddress Windows.ApplicationModel.Contacts.ContactAnnotation Windows.ApplicationModel.Contacts.ContactCardOptions Windows.ApplicationModel.Contacts.ContactConnectedServiceAccount Windows.ApplicationModel.Contacts.ContactDate Windows.ApplicationModel.Contacts.ContactEmail Windows.ApplicationModel.Contacts.ContactField Windows.ApplicationModel.Contacts.ContactFieldFactory Windows.ApplicationModel.Contacts.ContactInstantMessageField Windows.ApplicationModel.Contacts.ContactJobInfo Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs Windows.ApplicationModel.Contacts.ContactLocationField Windows.ApplicationModel.Contacts.ContactManager Windows.ApplicationModel.Contacts.ContactPhone Windows.ApplicationModel.Contacts.ContactPicker Windows.ApplicationModel.Contacts.ContactQueryOptions Windows.ApplicationModel.Contacts.ContactSignificantOther Windows.ApplicationModel.Contacts.ContactWebsite Windows.ApplicationModel.Contacts.FullContactCardOptions Windows.ApplicationModel.Contacts.KnownContactField Windows.ApplicationModel.Core.HolographicApplication Windows.ApplicationModel.Email.EmailAttachment Windows.ApplicationModel.Email.EmailFetchOptions Windows.ApplicationModel.Email.EmailIrmTemplate Windows.ApplicationModel.Email.EmailMailboxAutoReplySettings Windows.ApplicationModel.Email.EmailManager Windows.ApplicationModel.Email.EmailMeetingInfo Windows.ApplicationModel.Email.EmailMessage Windows.ApplicationModel.Email.EmailRecipient Windows.ApplicationModel.Search.Core.SearchSuggestionManager Windows.ApplicationModel.Search.LocalContentSuggestionSettings Windows.ApplicationModel.Search.SearchQueryLinguisticDetails Windows.ApplicationModel.Sync.Office365SyncConfiguration Windows.ApplicationModel.UserDataAccounts.UserDataAccountManager Windows.Devices.Bluetooth.GenericAttributeProfile.GattPresentationFormatTypes Windows.Devices.Enumeration.DevicePicker Windows.Devices.Printers.Print3DDevice Windows.Graphics.Display.StereoHeadMountedDisplay Windows.Graphics.Holographic.HolographicSpace Windows.Graphics.Printing.Print3DManager Windows.Graphics.Printing.Print3DModelPackage Windows.Management.Deployment.PackageVolume Windows.Media.Casting.CastingDevicePicker Windows.Media.ContentRestrictions.RatedContentDescription Windows.Media.ContentRestrictions.RatedContentRestrictions Windows.Media.ContentRestrictions.RatedContentRestrictionsImpl Windows.Media.DialProtocol.DialDevicePicker Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffectDefinition Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffectDefinition Windows.Media.Playback.BackgroundMediaPlayer Windows.Media.Playback.PlaybackMediaMarker Windows.Media.Playback.PlaybackMediaMarkerSequence Windows.Media.Protection.ComponentRenewal Windows.Media.Protection.PlayReady.PlayReadyDomainJoinServiceRequest Windows.Media.Protection.PlayReady.PlayReadyDomainLeaveServiceRequest Windows.Media.Protection.PlayReady.PlayReadyLicenseAcquisitionServiceRequest Windows.Media.Protection.PlayReady.PlayReadyMeteringReportServiceRequest Windows.Media.Protection.PlayReady.PlayReadyRevocationServiceRequest Windows.Media.Protection.PlayReady.PlayReadySoapMessage Windows.Media.SpeechRecognition.SpeechRecognizer Windows.Media.SystemMediaTransportControls Windows.Networking.NetworkOperators.HotspotAuthenticationContext Windows.Networking.NetworkOperators.MobileBroadbandAccountWatcher Windows.Networking.NetworkOperators.ProvisioningAgent Windows.Networking.NetworkOperators.WellKnownCSimFilePaths Windows.Networking.NetworkOperators.WellKnownRuimFilePaths Windows.Networking.NetworkOperators.WellKnownSimFilePaths Windows.Networking.NetworkOperators.WellKnownUSimFilePaths Windows.Networking.Vpn.VpnProfile Windows.Security.Credentials.UI.CredentialPicker Windows.Security.Credentials.UI.CredentialPickerOptions Windows.Security.Credentials.UI.UserConsentVerifier Windows.Security.EnterpriseData.DataProtectionManager Windows.Security.EnterpriseData.FileProtectionManager Windows.Security.EnterpriseData.FileRevocationManager Windows.Security.EnterpriseData.ProtectionPolicyManager Windows.Services.Maps.Guidance.GuidanceEngine Windows.Services.Maps.Guidance.MapSensor Windows.Services.Maps.Guidance.Traffic Windows.Storage.Pickers.FileOpenPicker Windows.Storage.Pickers.FileSavePicker Windows.Storage.Pickers.FolderPicker Windows.System.Energy.BackgroundEnergyManager Windows.System.Energy.Diagnostics.BackgroundEnergyDiagnostics Windows.System.Energy.Diagnostics.ForegroundEnergyDiagnostics Windows.System.Energy.ForegroundEnergyManager Windows.System.Profile.HardwareIdentification Windows.System.Profile.KnownRetailInfoProperties Windows.System.Profile.RetailInfo Windows.System.Profile.SystemManufacturers.SmbiosInformation Windows.System.UserProfile.AdvertisingManager Windows.UI.Composition.Compositor Windows.UI.Core.CoreInput Windows.UI.Core.CoreWindowDialog Windows.UI.Core.CoreWindowFlyout Windows.UI.Input.Inking.InkManager Windows.UI.Input.Inking.InkRecognizerContainer Windows.UI.Xaml.Controls.ListPickerFlyout Windows.UI.Xaml.Controls.Primitives.JumpListItemBackgroundConverter Windows.UI.Xaml.Controls.Primitives.JumpListItemForegroundConverter
本体の設定こまごまとか、アプリはおいおい。