Partilhar via


Solução de problemas

Este artigo mostra tópicos comuns da solução de problemas encontrados pelas pessoas.

Dica

Para encontrar algo específico, use Ctrl+F para localizar uma palavra ou frase.

Identificando o SKU

GetProductInfo API identifica as informações de SKU/Edição do IoT Core. A ID da edição/produto será assada na imagem.

PRODUCT_IOTUAP: 0x0000007B = Windows 10 IoT Core

Você pode encontrar mais informações sobre IDs de edição aqui.

Mapeando vkeys de hardware em Windows 10 IoT Core

Alterne para o relatório como um teclado HID e envie VKs em vez de controles de consumidor.

Minimizando a alocação de memória

Se você quiser minimizar a memória controlada pelo sistema operacional e o processamento para exibição, verifique se o sistema operacional está limpo e se nenhuma exibição está anexada. Verifique se as configurações do Intel INF não estão fingindo uma exibição quando nenhuma estiver anexada e configure as saídas para ser DisplayPort externo. Isso deve resultar na execução do DWM, mas agindo como se o monitor estivesse ocioso.

Recuperando lotes e obtendo despejos de memória

Especificamente para aplicativos UWP:

  1. Obtenha sua loja de aplicativos assinada e você receberá telemetria por meio do portal do aplicativo no Centro de Desenvolvimento. Você receberá pilhas de cal, mas não despejos completos.
  2. Você pode usar WerRegisterAppLocalDump para fazer seu aplicativo despejar logs e, em seguida, fazer com que o aplicativo os carregue onde quiser.
  3. Além disso, você pode instrumentar ainda mais com VSAppCenter ou HockeyApp.

Para problemas do sistema (NTServices, estabilidade do sistema operacional ou driver):

  1. Estamos trabalhando em um portal do Partner Telemetry Insights para permitir que os clientes recebam pilhas de chamadas e informações sobre serviços de falha, componentes do sistema operacional e drivers.
  2. Você pode ter um script personalizado ou exe para coletar arquivos dmp do dispositivo.
  3. Você pode usar o DM IoT do Azure para configurar o rastreamento de ETW no dispositivo conforme necessário e capturar logs.
  4. Você pode criar um exe personalizado para chamar wevtapi.dll e registrar o último motivo do desligamento.

Executando SLEEPSTUDY

Se você encontrar o erro 0x080004005 ao tentar executar SLEEPSTUDY no Windows 10 IoT Core, precisará fazer o seguinte para gerar um relatório SLEEPSTUDY:

  1. No SSH/PowerShell, execute este comando no IoT COre; powercfg / sleepstudy / xml
  2. Isso gerará um "sleepstudy-report.xml".
  3. Copie o relatório de sleepstudy-report.xml gerado para um computador desktop e execute "powercfg/sleepstudy/transformxml sleepstudy-report.xml"
  4. A sleepstudy-report.html final será gerada.

Manutenção de aplicativos e lidar com NTServices

Iterações rápidas de aplicativo podem ser feitas com o App Store ou usando o Blob do Azure. Com a loja de aplicativos, você não precisa pagar pela CDN e pela saída. Também há cobertura de CDN mundial gratuitamente com a loja. É uma boa regra geral obter uma ID da Loja e a Atualização da Loja prontas ao enviar para uma atualização rápida do aplicativo.

Definindo a classe Bluetooth do dispositivo como "não um computador"

Para uma boa interoperabilidade e compatibilidade bluetooth, é importante que a pilha Bluetooth indique uma classe adequada de dispositivo (COD). Os vários valores são definidos pelo padrão aqui.   Por padrão, o Windows lê os dados do fator forma do valor do tipo de compartimento SmBios (consulte a tabela 17 na página 38) e deriva os campos Classe de Dispositivo Principal e Classe de Dispositivo Secundária do CoD a partir disso. Se uma plataforma quiser substituir o COD padrão atribuído por meio do tipo de compartimento, ela poderá fazer isso definindo os valores "COD Major" e "Tipo DE COD" documentados aqui.

Definindo o nome do computador

A IoT tem uma ferramenta interna do Win32 chamada "SetComputerName".  Isso pode ser chamado para alterar o nome do computador.  Uma reinicialização é necessária para alterar o nome.  Infelizmente, esse utilitário deve ser chamado do contexto de administrador e os aplicativos UWP são executados no contexto do usuário DefaultAccount.   Uma maneira de solucionar isso é executar um arquivo em lote de uma tarefa agendada disparada manualmente que chama SetComputerName.  O arquivo em lote precisará ler o nome do computador desejado de um arquivo de texto no qual seu main aplicativo UWP salvará o nome.  Por exemplo, o aplicativo UWP poderia salvar um arquivo na pasta de documentos públicos e o arquivo em lote o leria nela.  Em seguida, o aplicativo UWP precisaria usar o inicializador de processo (para disparar a tarefa agendada a ser executada (por exemplo, schtasks /run /TN "SetMyComputerNameTask") Leia os documentos do processlauncher aqui Leia documentos schTasks aqui

Compatibilidade com ASUS Tinkerboard e Rockchip

Embora a ASUS Tinkerboard e a Rockchip não sejam oficialmente compatíveis, há casos em que a Rockchip trabalhou com terceiros para fazer o SoC funcionar no Windows 10 IoT Core.

Problema ao conectar um dispositivo MBM durante o roaming

Considere dois fatores ao habilitar o roaming:

  1. O profile.xml configura o roaming e define o comportamento para estabelecer automaticamente uma conexão com a rede celular. Para definir um perfil para roaming, veja este artigo.

      <!-- 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>
    

    Para definir um perfil de conexão automática, selecione "automático":

    <!-- 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. Outro fator é que a política de roaming por interface precisa ser cumprida. Por padrão, essa política está definida como FALSE ("somente operadora doméstica"). Isso pode ser consultado e alterado na linha de comando por meio de netsh mbn get/set dataroamcontrol.

    Exemplo:

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

    Talvez você receba o erro 0x139f (ERROR_INVALID_STATE) caso o dispositivo esteja em roaming. No entanto, a política de roaming não permite o roaming de dados – erro em uma solicitação de conexão enviada a wwansvc.

Problemas de inicialização do Raspberry Pi 3B+

Observação

Esta versão do Raspberry Pi 3B+ é uma visualização técnica não compatível. A validação e a habilitação limitadas foram concluídas. Para ter uma experiência de avaliação melhor e para qualquer produto comercial, use o Raspberry Pi 3B ou outros dispositivos com SoCs compatíveis com Intel, Qualcomm ou NXP. Para solucionar problemas com o Raspberry Pi 3B+, confira nosso Guia de Solução de Problemas aqui.

O Raspberry Pi 3 modelo B+ é o produto mais recente da linha Raspberry Pi 3. Conta com um processador de núcleo quádruplo de 64 bits e 1,4 GHz, banda dupla de 2,4 GHz, LAN sem fio de 5 GHz, Bluetooth 4.2/BLE, Ethernet mais rápida e capacidade de PoE por meio de um PoE de alta disponibilidade.

Recentemente, vários clientes interessados no Windows 10 IoT Core encontraram um problema em que o dispositivo não iniciava normalmente após instalar a imagem do Windows 10 IoT Core, mas o Raspbian funciona bem com ele. Veja a seguir algumas sugestões de como solucionar o problema de inicialização.

Há alguns problemas conhecidos nesta imagem do Insider Preview. Observação:

  • Esta imagem é destinada somente ao Raspberry Pi 3B+ e não será inicializada no Raspberry Pi 2.
  • A implantação do driver F5 do Visual Studio não funciona no Windows 10 IoT Core.
  • Integrar Wi-Fi e Bluetooth não funciona no Raspberry Pi 3B+.
  • O driver da tela touch Ft5406 fica desabilitado no Raspberry Pi 3B+.
  • O LED de atividade do cartão SD fica desabilitado.

Há somente dois requisitos ao escolher os cartões SD a serem usados com o Windows 10 IoT Core. É necessário usar um cartão SD classe 10 e verificar se há espaço suficiente – ao menos 8 GB. Há alguns cartões SD que foram verificados pela Microsoft e considerados compatíveis com o Windows 10 IoT Core:

  • Cartão SDHC Samsung EVO 32 GB classe 10 Micros
  • Cartão SDHC SanDisk Ultra Micro, 16 GB

Em geral, é preciso verificar se o cartão SD é falso, se está danificado ou corrompido. O cartão SD é igualmente propenso a ser corrompido devido a uma variedade de fatores, como falta de energia ou remoção inadequada. É importante proteger seu cartão de memória contra danos.

Para instalar sua imagem em um cartão SD, será possível usar o Painel do Windows 10 IoT Core. Você precisará escolher "Personalizado" no campo Build do Sistema Operacional e, em seguida, selecione o arquivo FFU para instalar a imagem.

Verifique se há qualquer falha de hardware no dispositivo. Existem dois LEDs na placa do Raspberry Pi 3B+, assim como no 3B. Um para o PWR e outro para o ACT. O número de vezes que a luz do ACT pisca determinará se a placa está sendo inicializada ou não. O LED de atividade do cartão SD não piscará durante algumas partes da inicialização no Raspberry Pi 3B+.

Se o dispositivo mostrar uma página de espera durante a inicialização, aguarde com paciência. Em geral, isso durará até um minuto. No entanto, às vezes, por causa da velocidade de leitura/gravação do cartão SD, pode levar mais tempo.

Se o dispositivo não iniciar normalmente com o Windows 10 IoT Core, tente instalar uma imagem do sistema operacional Linux (como o Raspbian) no cartão SD para descobrir se o problema é de hardware.

Se uma tela "arco-íris" for exibida, verifique se a imagem da versão 3B+ foi instalada, disponível aqui. É possível verificar o processo com um tutorial de instalação de imagem do 3B+ enviado pela comunidade aqui.

Comunicação de porta serial no Windows 10 IoT Core para Raspberry Pi

No Raspberry Pi, o UART de hardware e os adaptadores UART USB poderão ser usados em seu aplicativo com uma comunicação serial. Por padrão, os pinos de transmissão e recepção do UART serão os pinos 8 e 10 no cabeçalho GPIO.

Adaptadores UART e UART USB

Leia este artigo para saber mais sobre como iniciar o UART0 e executar uma gravação seguida de uma leitura.

Além disso, a RFCOMM (Comunicação por Rádiofrequência) é a comunicação serial subjacente para o Bluetooth clássico. Veja este exemplo do GitHub para saber mais sobre como executar aplicativos UWP no Windows 10 IoT Core para se conectar por meio de um dispositivo IoT com Bluetooth Serial.

Se você descobrir que esse dispositivo não pode ler/gravar dados por meio da porta serial, siga as etapas abaixo para solucionar o problema:

  1. Conecte o TX ao RX com o Jumper – mostrado abaixo. Em seguida, execute o código de exemplo para verificar se o aplicativo pode ler/gravar dados. Se isso não funcionar, o IC da placa pode estar quebrado.

    TX para RX no Raspberry Pi

  2. Verifique se o BaudRate, o Handshaking e o StopBits estão configurados corretamente. Se a porta serial a ser testada tiver uma interface RS232 completa (por exemplo, DB9), use um plugue DB com fios cruzados RxTx conectados com os cabos cruzados normais de handshaking. Algumas portas RS232 (ou adaptadores USB) exigem que sinais como DCD (Portadora Detectada) e DSR (DCE Pronto) sejam declarados antes de funcionar corretamente.

  3. Se você quiser usar adaptadores UART USB no Windows 10 IoT Core, os seguintes são compatíveis:

  • CP2102 USB 2.0
  • TTL Module Serial Converter
  • FTDI
  • usbser.sys genérico

Você também pode usar a pilha de devcon.exe e o cmdlet devcon.exe status para marcar a pilha de drivers esperada e os drivers status em Windows 10 IoT Core.

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

O Mincomm é outra ferramenta útil para solucionar problemas de porta serial. Essa ferramenta pode enumerar portas, mostrar o nome amigável e a ID do dispositivo, abrir portas, definir configurações (ou seja, a taxa de transmissão, bits de parada etc.) e enviar e receber dados.

Serviço Sirep Test

Mesmo que o serviço Sirep Test não seja habilitado por padrão nas imagens de varejo, caso você ainda queira desabilitá-lo na inicialização, será possível fazer logon e desabilitá-lo na inicialização automática.

Use os seguintes comandos do PowerShell para fazer isso, conforme mostrado abaixo:

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

Modo tablet

O "Modo Tablet" é um conceito que existe somente no shell da Área de Trabalho e não se aplica ao IoT Core.

Caso o dispositivo tenha um hardware compatível (por meio de I2C ou USB HID Touch), o toque deverá funcionar de maneira automática usando drivers de classe da caixa de entrada. Leia mais sobre isso aqui.

Compatibilidade com Yubikey

O Windows 10 IoT Core não é compatível com cartão inteligente. No entanto, os cartões inteligentes geralmente são dispositivos usados para identidade do usuário, e não do dispositivo, porque são protegidos com PINs e, no caso do Yubikey, ao pressionar um botão. Isso não está de acordo com um dispositivo IoT. Se você estiver procurando uma alternativa, um TPM 2.0 no dispositivo poderá funcionar melhor que um Yubikey ou um cartão inteligente. Temos compatibilidade completa com certificados para TPMs. Eles devem armazenar dispositivos, certificados do usuário e credenciais de acesso ao Azure IoT (Limpets).