윈도우 참가자 프로그램/Redstone 1/IoT

1 개요

이 문서는 Windows 10의 참가자 프로그램 Redstone 1/IoT에 대해 다룬다.

2 빌드 변경 내역

2.1 14262

2016년 2월 17일에 배포되었다.

2.1.1 새로운 기능

  • 첫 윈도우 10 IoT Core Redstone 참가자 빌드 배포
    • 코어 OS와 드라이버 패키지 버그 수정
    • 다음과 같은 버그 수정
      • UI, 안정성 향상을 포함한 웹 관리 포털 업데이트
      • MinnowBoard Max/x86 플랫폼용 FTDI USB 시리얼 드라이버 업데이트
      • Silicon Labs USB 시리얼 드라이버 업데이트
      • SSH 서버 안정성 이슈 해결

2.1.2 배포 노트 변경 사항

다음과 같은 문제점이 추가되었다.

  • .NET 네이티브 툴 체인

".NET 네이티브 툴 체인으로 컴파일"을 켜면 .NET 네이티브 런타임 배포의 에러로 앱 배포에 실패할 수 있다.

  • 블루투스 페어링 (6162324)

블루투스 페어링 웹 관리 인터페이스에 블루투스 장치들이 제대로 보여지지 않는다.

  • AllJoyn 템플릿으로 어댑터 참조

특정 SDK 버전에서 AllJoyn 어댑터 프로젝트에 참조를 추가하는 것을 시도하면 에러가 발생할 수 있다. 에러를 해결하기 위해서는 비주얼 스튜디오의 타겟 플랫폼을 현재 SDK 버전으로 맞추고, 프로젝트를 다시 불러오면 된다.

  • 라즈베리 파이 2에서 시리얼 포트 사용과 접근

라즈베리 파이 2가 PL011 UART로 시리얼 통신을 할 수 있다. 이 기능은 커널 디버깅 시나리오에서 기본으로 켜져있다. 앱이나 장치드라이버는 다음과 같은 명령어로 디버거를 꺼서 PL011 장치 드라이버에서 PL011 UART로 데이터를 보내고 받을 수 있다.
bcedit /set debug off

  • 앱이 이미 작동하고 있다. (1244550)

기본 시작 앱이 비주얼 스튜디오에서 배포될 때 자기 자신과 충돌한다. 완화요소: 기본 시작 앱을 다른 앱으로 배포하면 된다.

  • 앱 충돌의 쉘 관리

IoT Core의 쉘 인프라는 장치에서 돌아가는 APPX 타입 앱들이 깨지는지 모니터링하고, 충돌이 일어나면 자동으로 재시작하게 한다. 재시작된 앱들이 계속 충돌이 일어나면, 쉘이 __failfast(시스템 크리티컬 프로세스, 버그체크 후 복구를 위해 재부팅을 시도한다)를 실행한다. UI 있는 환경에서 백그라운드 작업과 포그라운드 앱들이 충돌 핸들링이 실행될 것이다. 충돌 핸들링과 재시작 논리는 다음과 같이 실행하면 된다.

Software\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\CBTConfig (or ForegroundAppConfig for headed)
Qword:"FailureResetIntervalMs" – length of time app has to run successfully to reset failures seen to 0. – default is 0x00000000000493E0 == 5 minutes
Qword:"BaseRetryDelayMs" -- wait time coefficient. Default is 0xa.
Dword:"MaxFailureCount". Default is 10
DWord:"FallbackExponentNumerator", default is 31.
Dword:"FallbackExponentDenominator", default is 20


Fallback_exponent = FallbackExponentNumerator / FallbackExponentDenominator; // default is 1.55

앱 충돌이 탐지되면:

if time_since_last_crash > failureresetinterval then crashes_seen = 1
else ++crashes_seen;

if crashes_seen > MaxFailureCount then __failfast;

else
delay = (dword) ((float)BaseRetryDelayMs * (crashes_seen ** Fallback_exponent))
wait for delay and relaunch app

다음과 같은 문제들이 해결되었다.

  • 윈도우 장치 포털이 하루동안 정상적으로 돌아간 뒤에 멈춘다. (5458435)
  • 기본 시작 앱이 Visual Studio로 배포되면 충돌할 수 있다 (4266059).[1]
  • 라즈베리 파이 2에서 MediaEncodingProfile.CreateWma(Windows.Media.MediaProperties.AudioEncodingQuality.Auto)가 No suitable transform was found to encode or decode the content. (Exception from HRESULT: 0xC00D5212)에러와 함께 실패할 수 있다. (4510128)
  • More.com!PAGER::DisplayString이 INVALID_POINTER_READ 예외를 반환한다. (1552523)
  • Node.JS 프로젝트를 배포하면 BackgroundTaskHost.exe가 에러와 함께 실행에 실패할 수 있다. (4873190)
  • 앱이나 백그라운드 작업이 비정상적 상태에 들어가면 장치가 SSH 세션을 연결하고 재설정하는 대신 블루스크린을 띄운다. (5098713)
  • 상업용 레이센스를 쓸 때 ICD 이미지 빌드가 실패한다. (5291899, 5382557)
  • 라즈베리 파이2에 웹캠과 USB 오디오 어댑터나 헤드셋을 동시에 연결하면 충돌이 일어난다. (5383535)
  • 장치 이름을 15 글자보다 많이 설정하면 부팅에 실패하고, 이 현상이 나타나면 다시 IoT Core를 올려야 한다. 장치 이름을 15 글자보다 적게 적으면 된다. (5474244)
  • SiLabs USB 직렬 어댑터를 열려고 시도할 때 SerialDevice.FromIdAsync()가 NULL 값을 반환할 수 있다. (5385500)
  • MinnowBoardMax에서 SPI 드라이버가 250kHz보다 낮은 주파수로 작동할 때 FullDuplex와 TransferSequential 통신을 위한 잘못된 버스 트래픽을 만들 수 있다. (3076149)
  • SiLabs USB-직렬 컨버터(USB\VID_10C4&PID_EA60)가 에러 31과 함께 로드에 실패한다. (5307602)
  • MinnowBoardMax에서 FTDI USB-직렬 어댑터가 요청한 보 비율을 무시하고 3.8Mhz로 작동할 것이다. (5348073)

2.2 14295

2016년 3월 29일에 배포되었다.

2.2.1 새로운 기능

  • 이미지에 원격 디스플레이 경험 포함
  • Windows as a Service 지원을 더 잘하기 위해 서비스 엔진 업데이트
  • 설치된 UI 없는 앱의 제거의 지원 강화
  • IoTCoreImageHelper, IoTWatcher가 설치 패키지에서 제거되었다. 둘의 기능은 이제 IoT 대시보드 앱에 포함되어 있다.
  • OS 버그 수정을 포함한 OS 파일 업데이트

2.2.2 수정된 문제점

다음과 같은 문제들이 수정되었다.

  • .NET 네이티브 툴 체인

".NET 네이티브 툴 체인으로 컴파일"을 켜면 .NET 네이티브 런타임 배포의 에러로 앱 배포에 실패할 수 있다.

  • 블루투스 페어링 (6162324)

블루투스 페어링 웹 관리 인터페이스에 블루투스 장치들이 제대로 보여지지 않는다.

2.2.3 알려진 문제점

  • 이 빌드는 이제 공격적인 방화벽 설정이 켜져있다. 그래서 이제 듣기 위해 열린 포트들을 막는 것이 기본값이다. 앱이 통신하기 위해서 SSH나 파워쉘로 장치에 연결한 후 다음과 같은 명령어를 써야 한다.
    • 특정 포트를 열기 위해서:

netsh advfirewall firewall add rule name=[Any name to identify rule] dir=in action=allow protocol=TCP localport=[Port number]

  • Node.JS는 기본 포트가 1337이고 다음과 같은 명령어로 사용할 수 있다.

netsh advfirewall firewall add rule name=”Node.js UWP” dir=in action=allow protocol=TCP localport=1337

  • Visual Studio에서 파이선 프로젝트를 배포하면 Visual Studio가 멈추거나 "디버거에 붙일 수 없음" 에러가 나올 수 있다. 이는 파이선 디버거가 방화벽에 의해 막혔기 때문이다. 파이선 개발을 하기 위새허는 SSH나 파워쉘로 장치에 연결해 다음과 같은 명령어를 사용하면 된다.

netsh advfirewall firewall add rule name="TCP5678-TCP-in" dir=in action=allow protocol=TCP localport=5678
netsh advfirewall firewall add rule name="TCP5678-TCP-out" dir=out action=allow protocol=TCP localport=5678

  • AllJoyn DSB Visual Studio 템플릿이 Visual Studio의 최신 버전에서 IoT Core로 배포를 할 수 없다.
  • 라즈베리 파이 3 온보드 직렬 포트를 위한 UART/Serial (miniUART) 드라이버는 이 빌드에서 깨져있다.

2.3 14322

2016년 4월 23일에 배포되었다.

2.3.1 새로운 기능

  • 자이로 센서와 자기 센서 노출을 포함한 원격 디스플레이 경험 업데이트와 버그 수정
  • 라즈베리 파이 3에서 온보드 WiFi 드라이버 켜짐
  • 라즈베리 파이 3 온보드 직렬 포트용 UART/Serial (miniUART) 드라이버가 포함됨
  • 하드웨어 가속 미디어 인코더 지원
  • 핵심 OS 버그 수정을 포함한 OS 파일 업데이트

2.3.2 배포 노트 변경 사항

  • 공격적인 방화벽 설정이 해제되었다. 이제 추가적인 명령어 없이 앱을 배포할 수 있다.
  • AllJoyn DSB Visual Studio Template가 IoT Core에 정상적으로 배포된다.

2.3.3 시간 동기화

시간 서버에 접속할 수 없거나 멀어서 시간 동기화가 실패하면, 다음을 통해 시간 서버를 추가할 수 있다.

  • 장치의 명령줄을 통해(예: SSH, 파워쉘)

w32tm /config /syncfromflags:manual /manualpeerlist:"0.windows.time.com 1.pool.ntp.org 2.다른 서버 주소, ..."

2.4 14328

2016년 5월 11일에 배포되었다.

2.4.1 새로운 기능

  • 핵심 OS 버그 수정을 포함한 OS 파일 업데이트

2.5 14342

2016년 5월 17일에 배포되었다.

2.5.1 새로운 기능

  • IoT Core FFU의 최소 필요 저장 공간이 4GB로 감소되었다.
  • 이 변경으로 모든 앱은 DATA 파티션에 저장되어야 한다. 메인 OS 파티션은 OS만 쓸 수 있게 해야 한다.
  • OS 버그 수정을 포함한 OS 파일 업데이트

2.5.2 해결된 문제점

  • 최신 버전 비주얼 스투디오에서 AllJoyn DSB 비주얼 스투디오 템플릿을 IoT Core로 배포할 수 없던 문제가 해결되었다.

2.5.3 알려진 문제점

  • 최신 윈도우 SDK(14337 빌드 이후)가 이 빌드와 호환되지 않는다. 비주얼 스투디오 2015 업데이트 2에 포함된 SDK를 사용해야 한다.
  • 라즈베리 파이 3에서 첫번째 부팅 때 이더넷과 WiFi가 작동하지 않는다. 느린 SD 카드로 설치된 경우에 더 잘 나타난다.

2.6 14366

2016년 6월 23일에 배포되었다.

2.6.1 새로운 기능

  • 핵심 OS 버그 수정을 포함한 OS 파일 업데이트
  • SDK 호환성 문제 해결
  • 라즈베리 파이 3 네트워킹 문제를 업데이트로 수정
  • FTP 서버 (FTPD) 배포 이미지에서 기본으로 꺼져있다. FTP 서버 시작에 관해서 아래 참조.

2.6.2 알려진 문제점

  • Minnow Board Max 부팅 문제를 해결하기 위해선 UEFI 펌웨어를 92나 그 이후 버전으로 플래싱/업데이트해야 한다.
  • 라즈베리 파이 3에서 오디오 캡처가 실패한다.
  • IoT Core 드라이버 개발 샘플이 현재 윈도우 드라이버 SDK로 컴파일되지 않는다.
  • 파티션 크기로 인해 32GB 이상의 SD 카드가 꽃힌 라즈베리 파이는 부팅에 실패한다.

2.6.3 FTP 서버 시작

시작할 때 더이상 FTP 서버가 기본으로 시작하지 않는다.

  • 한 번 돌리기 위해선:

SSH/PS로 로그인 후 이 명령어로 FTP를 시작하면 된다: start ftpd.exe

  • 부팅떄마다 돌아가게 하려면 스케줄러 작업을 만들어야 한다:

SSH/PS로 로그인 후 스케줄러 작업을 생성한다:

schtasks /create /tn "IoTFTPD" /tr ftpd.exe /ru system /sc onstart
Schtasks /run /tn “IoTFTPD”

2.7 14376

2016년 7월 6일 배포되었다.

2.7.1 새로운 기능

  • 핵심 OS 버그 수정을 포함한 OS 파일 업데이트
  • UI 없는 모드에서 OS가 로딩 후 부팅 로고를 더 이상 보여주자 않는다.
  • 장치들이 더 이상 대시 보드애서 가상으로 보고되지 않는다.
  • BT 안정성 문제를 해결하기 위해 RPi3 직렬 드라이버를 업데이트했다.

2.7.2 해결된 문제점

  • 라즈베리 파이 3에서 오디오 캡처가 실패하던 문제를 해결했다.
  • IoT Core 드라이버 개발 샘플이 현재 윈도우 드라이버 SDK로 컴파일되지 않던 문제를 해결했다.
  • 파티션 크기로 인해 32GB 이상의 SD 카드가 꽃힌 라즈베리 파이는 부팅에 실패하던 문제를 해결했다.

2.7.3 알려진 문제점

  • 앱, 프로세스, 블루투스 페어링 같은 윈도우 쟝치 포털/WEBB의 일뷰가 작동하지 않는다.
  • 라즈베리 파이에서 IoT Core을 돌릴 때 음성 인식과 말하기 샘플이 몇몇 경우에 작동하지 않는다.

2.7.4 기본 FFU에서 센서 드라이버 충돌

제공된 FFU에 센서 드라이버 충돌이 있다. 원격 센서 프레임워크가 컴퍼스, 자기센서, 가속센서, 자이로스코프 드라이버를 설치한다. 앱에제공되는 UWP API들은 1이 설치된걸로 간주한다. 만약애 물리적으로 연결된 장치의 드라이버를 만들고 있다면, 마이크로소프트가 제공한 FFU의 원격 드라이버가 충돌할 것이다.
해결 방법: 충돌하는 드라이버는 SSH나 Powershell로 장치에 연결한 후 devcon.exe 툴로 “devcon.exe remove @”ROOT\REMOTESENSORDRIVER*”를 입력해 원격 센서 드라이버를 제거하면 된다. 원격 센서 드라이버는 OEM이 제작한 FFU에 영향을 미치지 않는다.

2.8 14393

2016년 8월 2일에 배포되었다.

2.8.1 새로운 기능

  • 핵심 OS 버그 수정을 포함한 OS 파일 업데이트
  • 윈도우 장치 포털/WEBB가 앱과 프로세스들을 보여주지 않는 문제와 블루투스 페어링의 문제를 해결했다.
  • 라즈베리 파이에서 음성 인식 문제를 수정했다.
  • MBM에서 연결 해제/재연결 이벤트 후 디스플레이에 출력되지 않던 문제를 해결했다.
  • 제공된 FFU를 사용할 때 기본 계정의 패스워드가 업데이트 후 재설정되던 문제를 수정했다.

2.8.2 수정된 문제점

  • 윈도우 장치 포털/WEBB의 앱, 프로세스, 블루투스 페어링을 포함한 일부가 정상적으로 작동하지 않던 문제가 해결되었다.
  • 부팅 중 생기는 문제를 피하기 위해 Minnow Board Max UEFI/펌웨어를 .92나 그 이후로 플래싱/업데이트 해야 했던 문제를 수정했다.
  • 라즈베리 파이에 IoT Core를 올릴 때 음성 인식과 음성 샘플들이 몇몇 경우에 실패하던 문제를 수정했다.

2.8.3 알려진 문제점

  • 라즈베리 파이 3에 내장된 블루투스 드라이버가 저대역폭 장치만을 지원한다.
  • MBM에서 DMAP/Lightning 제공자와 같이 GPIO를 사용할 때 Lightning Nuget의 문제로 Pin.Read가 실패한다.
  • 몇몇 경우에 비주얼 스튜디오로 앱을 배포하거나 디버깅하면 마우스 포인터가 보이지 않는다.
  • SoftAP 클라이언트를 사용할 때 UAP 앱에서 보여준 컨텐츠에 접근할 수 없다. 밑의 SoftAP를 통한 서버 애플리케이션에서 자세한 설명을 볼 수 있다.

2.8.4 SoftAP를 통한 서버 애플리케이션

SoftAP 클라이언트를 사용할 때 UAP 앱에서 제공하는 컨텐츠에 접근할 수 없다.
SoftAP로 UAP 앱들을 보여주려면 다음을 장치에 콘솔로 명령해야 한다.

reg add hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy /t REG_DWORD /d 1
checknetisolation loopbackexempt -a -n=<AppID for SoftAP App>
checknetisolation loopbackexempt -a -n=<AppID for Additional App>

예시: checknetisolation loopbackexempt -a -n=IoTOnboardingTask-uwp_1w720vyc4ccym Reboot
  1. 앞의 버그와 같은 증상이지만 번호가 다르므로 다른 버그로 취급하겠다.