Note: WIFI on Windows 10 IoT Core for ARM

基本上目前在Windows 10 IoT Core for ARM 上面有Driver 的還是少數, 所以實際上沒啥選擇

最後還是上拍賣網站找了一隻NTD 99 的用RTL8192CU under Linux 在Windows 10上認成RTL8188CU 的 USB Adapter 處理這個問題

這情況就是市場沒起來 廠商不願意投資資源去開發相關東西
雖然Windows 10 IoT Core 是桌面版本的精簡版本
多數時候Windows Driver 只要重編就好
但是還是必須要投資人力與準備相關測試平台沒有明顯市場等於不划算

Screenshot_2018-08-23_17-58-43WLANwithRTL8188CU

Update: 查了一下 Windows 7 WDK 有RTL8187 USB 的 driver source code, 從訊息看來當初WLAN Driver 開發有同時跟Atheros 跟Realtek 等共同開發, 不過文件內的說明就很有趣了,
有查一下大概跟HW dependence 都放到rtlpriv.lib 裡面, 主要跟硬體操作相關的, 用dumpbin 查了一下很多functions 但是實際用上的好像沒那樣多, 多數硬體相關的可以從linux driver 反推回去才對

; /****************************************************************************
; * Copyright 2006 Atheros Communications Inc., all rights reserved. *
; * INF file for Atheros reference designs *
; ****************************************************************************/

; /****************************************************************************
; ** DEVELOPED BY MICROSOFT AND Realtek SEMICONDUCTOR CORP **
; ****************************************************************************/

[version]
Signature = “$Windows NT$"
Class = Net
ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider = %Msft%
LayoutFile = layout.inf
CatalogFile = wifiusb.cat
DriverVer=06/21/2006,6.0.6001.16436
[Realtek.NTx86]
; DisplayName Section DeviceID
; ———– ——- ——–
%Realtek.DeviceDesc_8187% = realtek.ndi, USB\VID_0BDA&PID_8187

[Realtek.NTamd64]
; DisplayName Section DeviceID
; ———– ——- ——–
%Realtek.DeviceDesc_8187% = realtek.ndi, USB\VID_0BDA&PID_8187

Update 2:
試了一下, 移掉 rtlpriv.lib 會出現, 沒有下面24個functions implement

usbnwifi\extsta\mp_cntl.obj : error LNK2001: unresolved external symbol RF_ReadReg
usbnwifi\extsta\st_oids.obj : error LNK2001: unresolved external symbol Hw11RestoreEncryption
usbnwifi\extsta\hwextsta.lib(hw_oids.obj) : error LNK2001: unresolved external symbol HwSetNICAddress
usbnwifi\extsta\hwextsta.lib(hw_oids.obj) : error LNK2001: unresolved external symbol HwSaveAdjustBeforeScan
usbnwifi\extsta\hwextsta.lib(hw_oids.obj) : error LNK2001: unresolved external symbol HwSetBSSIDAndBcnIntv
usbnwifi\extsta\hwextsta.lib(hw_oids.obj) : error LNK2001: unresolved external symbol HwInternalStartReqComplete
usbnwifi\extsta\hwextsta.lib(hw_main.obj) : error LNK2001: unresolved external symbol HaltNic8187
usbnwifi\extsta\hwextsta.lib(hw_main.obj) : error LNK2001: unresolved external symbol SetRFPowerState
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol LedControlCallback8187
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol Init8185
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol SetupBeaconQueue8187
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol TxFillDescriptor8187
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol HwPeriodTimerHandler
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol HwRestoreToBeforeScan
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol SwChnlPhy
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol HwRemoveKeyEntry
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol SetEncryption8187
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol HwAddKeyEntry
usbnwifi\extsta\hwextsta.lib(hw_nic.obj) : error LNK2001: unresolved external symbol HwSetNicPSMode
usbnwifi\extsta\hwextsta.lib(hw_recv.obj) : error LNK2001: unresolved external symbol HwRSSI
usbnwifi\extsta\hwextsta.lib(hw_send.obj) : error LNK2001: unresolved external symbol HwPostSendHandler
usbnwifi\extsta\hwextsta.lib(bus_intf.obj) : error LNK2001: unresolved external symbol ReadNicInfo8187
usbnwifi\extsta\hwextsta.lib(bus_intf.obj) : error LNK2001: unresolved external symbol InitializeNic8187
usbnwifi\extsta\hwextsta.lib(usb_recv.obj) : error LNK2001: unresolved external symbol QueryRxDescStatus8187

Update: Sep. 1 2018,
目前Windows driver sample 有新的Realtek WIFI driver (WDI model)不過是針對SDIO的, 這我能理解目前Embedded Device 實際上多數還是SDIO WIFI+HSUART BT組合最為普遍

廣告

Note: Realtek WIFI with Windows 10 IoT for ARM driver

找了一下只有 EDIMAX EW-7811Un 是直接說有Raspberry Pi for Windows 10 IoT support
它相同官網的TP-LINK TL_WN725N(USB/VID_0BDA&PID_8179)
與一系列Realtek Wifi USB chip  有8188EU/8188FU/8192CU/8192EU/8703BU/8723BU/8723DU/8811AU/8822BU

剛好入手一個8822BU 打算來試試看是否能裝
手上的是WIFI+BT 目前看來BT可能沒法用 需要一個BTFilter 去load firmware/config才行

有趣的是BT Functions 看起來可以用inbox driver 就可以scan others devices
但是WIFI 手動裝上Driver 會認到卡 但是實際無法使用掃不到任何AP的SSID
EW-7811UN 用的是RL8188系列, 打算再入手一個來測試看看

這有個RTL 8812BU 的WIFI, Linux Driver 裡面還有含Android M 的 Porting guide
https://www.amazon.com/Wsky-1200Mbps-Wireless-Wifi-Adapter/dp/B0779VHS6S/ref=as_li_ss_tl?ie=UTF8&linkCode=sl1&tag=wolfteck-20&linkId=fe5ff3f7535cac978d43a27196407651

update :

Realtek Bluetooth不知道在搞啥 竟然不支援 BLE Peripheral Role 也想到去年某產品一直要求要有, 測起來就沒有 代理商的FAE 還一直照文件做 根本就沒有支援呀 會買這隻就是因為它是BT 4.1 才能支援DualRole 但是結果根本不支援 BLE Peripheral Role 比CSR的BT 4.0還不如呀真悲劇

RealtekBLE

Note: Smartcard Tools for Digital Signature

 

最近上工, 公司需要做一下Windows IoT的研究, 那個Build Retail image 時, 同Windows Driver 一樣需要一個 EV (Extended Validation) Code Signing Certicate  , 但是目前各大CA 為了提高Key的安全性都用了Two-Factor Authentication, 會用一個HardwareToken保護, 公司目前的Token 是一個USB Token 模擬Smartcard , 它讀取時需要輸入PIN Code 這變成開發過程有很麻煩的事情

根據科技來自人性的思考, Google 一番找到來自MGTek 的 Smartcard Tools 經過測試可以,  可以避免那個反覆彈出PIN input,

在iot-adk-addonkit v4.4 下面改了 %WPDKCONTENTROOT%\Tools\bin\i386 下的sign.cmd 去設定SIGNTOOL_EXE 這個環境變數成為 scsigntool.exe , 測試結果在目前環境要選用x86的scsigntool, 一開頭測試用x64 的版本去呼叫signtool  會出現 mismatch Machine type 的問題