Устранение неполадок

В этой статье приведены способы устранения проблем, с которыми часто сталкиваются разработчики.

Совет

Если вас интересует конкретная тема, используйте сочетание клавиш Ctrl+F для поиска по слову или фразе.

Определение номера SKU

GetProductInfo API идентифицирует сведения о номере SKU/выпуске IoT Core. В образ будет вложен код выпуска или продукта.

PRODUCT_IOTUAP: 0x0000007B = Windows 10 IoT Базовая

Дополнительные сведения об идентификаторах выпусков можно найти здесь.

Сопоставление аппаратных виртуальных ключей в Windows 10 IoT Базовая

Переключитесь на создание отчетов в качестве клавиатуры HID и отправку виртуальных машин вместо элементов управления потребителем.

Минимизация выделения памяти

Если вы хотите свести к минимуму объем памяти, управляемой ОС, и обработку для отображения, убедитесь, что операционная система чиста и что дисплей не подключен. Убедитесь, что параметры Intel INF не имитируют дисплей, если ни один из них не подключен, и настройте все выходные данные как внешние DisplayPort. Это приведет к тому, что DWM будет работать, но работать так, как если бы монитор неактивен.

Получение большого количества и получение аварийных дампов

В частности, для приложений UWP:

  1. Получите подпись магазина приложений, и вы получите данные телеметрии через портал приложений в Центре разработки. Вы получите стеки клиентских лицензий, но не полные дампы.
  2. Вы можете использовать WerRegisterAppLocalDump , чтобы получить от приложения дамп журналов, а затем отправить их в нужное место.
  3. Кроме того, вы можете еще больше инструментирования с помощью VSAppCenter или HockeyApp.

Для системных проблем (NTServices, стабильность ОС или драйвер):

  1. Мы работаем над порталом Аналитики телеметрии для партнеров, чтобы клиенты могли получать стеки вызовов и сведения о аварийно завершающихся службах, компонентах ОС и драйверах.
  2. Вы можете создать пользовательский скрипт или exe-файл для сбора DMP-файлов с устройства.
  3. Вы можете использовать Azure IoT DM для настройки трассировки трассировки etW на устройстве по мере необходимости и записи журналов.
  4. Вы можете создать пользовательский exe-файл для вызова wevtapi.dll и записи последней причины завершения работы.

Выполнение SLEEPSTUDY

Если при попытке запустить SLEEPSTUDY в Windows 10 IoT Базовая возникает ошибка 0x080004005, необходимо сделать следующее, чтобы создать отчет SLEEPSTUDY:

  1. В SSH/PowerShell выполните эту команду в IoT COre; powercfg / sleepstudy / xml
  2. Это приведет к созданию "sleepstudy-report.xml".
  3. Скопируйте созданный отчет sleepstudy-report.xml на настольный компьютер и выполните команду powercfg/sleepstudy/transformxml sleepstudy-report.xml
  4. Будет создана окончательная sleepstudy-report.html.

Обслуживание приложений и работа с NTServices

Быстрые итерации приложений можно выполнять с помощью App Store или с помощью большого двоичного объекта Azure. В магазине приложений вам не нужно платить за CDN и исходящие ресурсы. Существует также по всему миру CDN покрытия бесплатно с магазином. Это хорошее правило, чтобы получить идентификатор Магазина и обновление Магазина при доставке для быстрого обновления приложения.

Установка класса Bluetooth устройства на "не компьютер"

Для обеспечения хорошего взаимодействия и совместимости Bluetooth важно, чтобы стек Bluetooth указывал на соответствующий класс устройства (COD). Здесь приведены различные значения, определенные стандартом.   По умолчанию Windows считывает данные форм-фактора из значения типа корпуса SmBios (см. таблицу 17 на странице 38) и наследует поля Основной класс устройств и Класс дополнительных устройств coD. Если платформа хочет переопределить код по умолчанию, назначенный с помощью типа корпуса, она может сделать это, задав значения "Основной код" и "Тип COD", задокументированные здесь.

Задание имени компьютера

В IoT есть встроенное средство Win32 с именем SetComputerName.  Это можно вызвать, чтобы изменить имя компьютера.  Для изменения имени требуется перезагрузка.  К сожалению, эта служебная программа должна вызываться из контекста администратора, а приложения UWP выполняются в контексте пользователя DefaultAccount.   Один из способов обойти это — запустить пакетный файл из запланированной задачи, запускаемой вручную, которая вызывает SetComputerName.  Пакетный файл должен прочитать нужное имя компьютера из текстового файла, в который приложение UWP main сохранит это имя.  Например, приложение UWP может сохранить файл в папке общедоступных документов, а пакетный файл будет считывать его оттуда.  Затем приложению UWP потребуется использовать средство запуска процессов (для запуска запланированной задачи (например, schtasks /run /TN "SetMyComputerNameTask"). Ознакомьтесь с документацией по processlauncher здесь. Ознакомьтесь с документацией по schTasks здесь.

Поддержка ASUS Tinkerboard и Rockchip

Хотя мы и не предоставляем официальную поддержку для ASUS Tinkerboard и Rockchip, в некоторых ситуациях Rockchip в сотрудничестве с третьими сторонами удавалось успешно запустить SoC на платформе Windows 10 IoT Базовая.

Проблема при подключении устройства MBM в роуминге

При включении роуминга следует учесть два следующих момента.

  1. Файл profile.xml настраивает роуминг и автоматическое создание подключения к сети мобильной связи. Сведения о настройке профиля для роуминга см. в этой статье.

      <!-- applicability to any combination of home carrier, partner MOs and non-partner MOs, except for HomeAndNonPartner -->
      <xs:simpleType name="roamApplicabilityType">
        <xs:restriction base="xs:token">
           <xs:enumeration value="NonPartnerOnly"/>
           <xs:enumeration value="PartnerOnly"/>
           <xs:enumeration value="HomeOnly"/>
           <xs:enumeration value="HomeAndPartner"/>
           <xs:enumeration value="PartnerAndNonpartner"/>
           <xs:enumeration value="AllRoaming"/>
        </xs:restriction>
      </xs:simpleType>
    
      <xs:simpleType name="roamControlType">
        <xs:restriction base="xs:token">
           <xs:enumeration value="AllRoamAllowed"/>
           <xs:enumeration value="PartnerRoamAllowed"/>
           <xs:enumeration value="NoRoamAllowed"/>
        </xs:restriction>
      </xs:simpleType>
    

    Чтобы настроить автоматическое подключение профиля, выберите параметр auto:

    <!-- Connection Mode, default is "manual" -->
        <xs:element name="ConnectionMode" minOccurs="0">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <!-- manual connect always -->
              <xs:enumeration value="manual" />
              <!-- auto connect always -->
              <xs:enumeration value="auto" />
              <!-- auto connect when not roaming -->
              <xs:enumeration value="auto-home"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
    
  2. Еще один важный фактор — соблюдение политики роуминга для каждого интерфейса. По умолчанию для политики устанавливается значение FALSE ("только операторы внутри страны"). Вы может получить и изменить это значение из командной строки с помощью команды netsh mbn get/set dataroamcontrol.

    Пример

        netsh mbn show dataroamcontrol int=*
        netsh mbn set dataroamcontrol interface=Cellular profileset=all state=all
        netsh mbn set dataroamcontrol help
    

    При запросе соединения через wwansvc может возникнуть ошибка 0x139f (ERROR_INVALID_STATE), если устройство находится в роуминге, но роуминг данных запрещен политикой роуминга.

Проблемы с загрузкой Raspberry Pi 3B+

Примечание

Этот выпуск для Raspberry Pi 3B+ считается технической версией без официальной поддержки. Срок ограниченной проверки и реализации завершен. Чтобы более качественно оценить работу платформы, а также для работы с любыми коммерческими продуктами используйте Raspberry Pi 3B или другие устройства с поддерживаемыми платами SoC производства Intel, Qualcomm или NXP. Для устранения неполадок с устройствами Raspberry Pi 3B+ воспользуйтесь этим руководством.

Модель Raspberry Pi 3 B+ является новейшим продуктом в линейке Raspberry Pi 3. Она оснащена 64-разрядным четырехъядерным процессором с тактовой частотой 1,4 ГГц, двухдиапазонным адаптером беспроводной сети (2,4 ГГц и 5 ГГц), технологией Bluetooth 4.2/BLE, быстрым портом Ethernet и поддержкой питания по сети Ethernet (PoE) через отдельную плату PoE.

В последнее время многие клиенты, заинтересованные в использовании платформы Windows 10 IoT Базовая, столкнулись с невозможностью нормальной загрузки устройства после обновления до Windows 10 IoT Базовая при сохранении нормальной работы ОС Raspbian. Ниже приведены некоторые рекомендации по устранению таких неполадок с загрузкой.

В этом образе Insider Preview существует ряд известных проблем. Обратите внимание:

  • Этот образ предназначен только для Raspberry Pi 3B и не будет загружаться на устройстве Raspberry Pi 2.
  • В Windows 10 IoT Базовая не работает развертывание драйверов из Visual Studio с помощью клавиши F5.
  • Штатные устройства Wi-Fi и Bluetooth на устройстве Raspberry Pi 3B+ не работают.
  • Драйвер сенсорного экрана Ft5406 на Raspberry Pi 3B+ отключен.
  • Индикатор активности SD-карты отключен.

Есть только два требования по выбору SD-карты для использования с Windows 10 IoT Базовая. SD-карта должна относиться к классу 10 и обладать достаточным объемом (по меньшей мере 8 ГБ). Несколько SD-карт проверены корпорацией Майкрософт на совместимость с Windows 10 IoT Базовая:

  • карта microSDHC Samsung EVO на 32 ГБ, класс 10;
  • карта Ultra microSDHC SanDisk на 16 ГБ.

В общем случае достаточно убедиться, что SD-карта не поддельная и не повреждена. Повреждения SD-карт могут возникать по многим причинам, например при коротком замыкании питания или при неправильном изъятии. Очень важно оберегать карту памяти от повреждений.

Чтобы установить образ на SD-карту, можно использовать панель мониторинга Windows 10 IoT Базовая. В поле сборки ОС выберите вариант Custom (Пользовательская), а затем выберите нужный FFU-файл для установки.

Убедитесь, что все оборудование на устройстве исправно. На плате Raspberry Pi 3B+ присутствуют те же два светодиодных индикатора, что и на модели 3B. Один из них отвечает за питание (PWR), а другой — за активность (ACT). Количество миганий индикатора ACT позволяет определить, загружается ли плата. Индикатор активности SD-карты остается выключенным на некоторых этапах загрузки платы Raspberry Pi 3B+.

Наберитесь терпения, пока устройство загружается и отображает страницу ожидания. Обычно этот процесс занимает не более минуты. Но в некоторых случаях он может затянуться, например при низкой скорости чтения и (или) записи SD-карты.

Если устройство не может нормально загрузиться в Windows 10 IoT Базовая, попробуйте установить на SD-карту образ ОС Linux (например, Raspbian), чтобы исключить возможные проблемы с оборудованием.

Если вы увидите "радужный экран", проверьте установленную версию выпуска. Это должна быть специальная версия для 3B+, которая доступна здесь. Вы можете проверить этот процесс с помощью предоставленных сообществом руководств по установке образов на устройство 3B+.

Взаимодействие через последовательный порт в Windows 10 IoT Базовая на устройстве Raspberry Pi

На устройстве Raspberry Pi установлены аппаратные адаптеры UART и USB UART, которые позволяют приложениям использовать последовательный интерфейс. По умолчанию UART использует для передачи и получения данных контакты 8 и 10 на клемме GPIO.

Адаптеры UART и USB UART

Из этой статьи вы можете получить дополнительные сведения об инициализации UART0 и выполнении записи с последующим чтением.

Кроме того, для классической реализации Bluetooth используется канал радиочастотной связи (RFCOMM). Воспользуйтесь этим примером на GitHub, где описано выполнение приложений UWP в Windows 10 IoT Базовая на устройстве Интернета вещей, подключенном через последовательный интерфейс Bluetooth.

Если вы столкнетесь с ситуацией, когда устройство не может считывать и (или) записывать данные через последовательный порт, выполните следующие действия для устранения неполадок.

  1. Соедините перемычкой контакты RX и TX (как показано ниже), а затем выполните пример кода и убедитесь, что приложение может считывать и записывать данные. Если что-то не работает, вероятно, повреждена интерфейсная плата.

    Соединение TX и RX на Raspberry Pi

  2. Убедитесь, что скорость (бит/с), синхронизация и стоповые биты настроены правильно. Если проверяемый последовательный порт использует полный интерфейс RS232 (например, DB9), примените перемычку DB с перекрестным соединением RxTx, подключенным к обычному перекрестному соединению синхронизации. Для правильной работы некоторых портов RS232 (и USB-адаптеров) требуются особые сигналы, например сигналы обнаружения несущей (DCD) и готовности DCE (DSR).

  3. Если вы хотите использовать адаптеры USB UART в ОС Windows 10 IoT Базовая, поддерживаются следующие варианты:

  • CP2102 USB 2.0;
  • преобразователь последовательного модуля TTL;
  • FTDI;
  • универсальный драйвер usbser.sys.

Вы также можете использовать стек devcon.exe и командлет состояния devcon.exe, чтобы проверка ожидаемый стек драйверов и состояние драйверов в Windows 10 IoT Базовая.

USB\VID_10C4&PID_EA60\0001
    Name: Silicon Labs CP210x USB to UART Bridge
    Setup Class: {4d36e978-e325-11ce-bfc1-08002be10318} Ports
    Controlling service:
        silabser

Mincomm — еще один полезный инструмент для устранения неполадок с последовательным портом. Это средство позволяет перечислить порты, получить понятное имя и идентификатор устройства, открыть порты, настроить параметры (например, скорость, стоповые биты и т.д.), отправить и (или) получить данные.

Служба тестирования Sirep

Хотя служба тестирования Sirep не включена по умолчанию в розничных образах, вы можете войти в службу Sirep и отключить ее в режиме автозапуска, если хотите полностью избавиться от нее.

Для этого можно использовать следующие команды PowerShell:

administrator@MINWINPC C:\Data\Users\administrator>sc stop TestSirepSvc

SERVICE_NAME: TestSirepSvc
       TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x4
        WAIT_HINT          : 0x1770

administrator@MINWINPC C:\Data\Users\administrator>sc query TestSirepSvc

SERVICE_NAME: TestSirepSvc
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

administrator@MINWINPC C:\Data\Users\administrator>sc config TestSirepSvc start=disabled
[SC] ChangeServiceConfig SUCCESS

Режим планшета

Концепция "Режим планшета" существует только для оболочки рабочего стола и неприменима к Windows 10 IoT Базовая.

Если устройство использует поддерживаемое оборудование (через I2C или сенсорный ввод USB HID), сенсорный ввод должен работать автоматически через встроенные драйверы класса. Дополнительные сведения об этом можно найти здесь.

Поддержка Yubikey

ОС Windows 10 IoT Базовая не поддерживает смарт-карты. Однако сейчас это типичные устройства для идентификации пользователей, но не устройств, так как они защищены с помощью ПИН-кодов или кнопок, как в случае с Yubikey. Эти возможности плохо совместимы с устройствами Интернета вещей. Если вы ищете альтернативы, TPM 2.0 на устройстве будет работать лучше, чем Yubikey или смарт-карты. Мы предоставляем полную поддержку сертификатов для доверенных платформенных модулей, которые предназначены для хранения устройств, сертификатов пользователей и учетных данных для доступа к Интернету вещей Azure (Limpets).