Fazer alterações em um dispositivo após a fabricação

Importante

Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Uma das etapas finais na fabricação de um dispositivo do Azure Sphere é colocar o dispositivo no estado DeviceComplete, que protege o dispositivo contra modificações. No entanto, há situações em que os dispositivos que foram colocados no estado DeviceComplete precisam ser modificados.

O mecanismo seguro usado para esses cenários é usar uma funcionalidade do dispositivo. Há dois tipos de funcionalidade de dispositivo, fieldServicing e appDevelopment, e você deve usar aquele que tem o conjunto mínimo de recursos necessários. Ou seja, se o recurso fieldServicing atender às suas necessidades, você deverá usá-lo, mas se for necessária maior flexibilidade, use o recurso appDevelopment. Embora os recursos tenham sido projetados para os dois cenários que dão origem a eles, você deve verificar as funcionalidades reais habilitadas em vez de confiar nesse nome. Somente o proprietário do locatário do dispositivo pode adquirir recursos para esse dispositivo, e cada recurso é restrito a um único dispositivo.

Ao fazer alterações em um dispositivo DeviceComplete, você não deve fazer sideload desses recursos. Isso elimina o risco de deixar acidentalmente o recurso presente e, assim, deixar o dispositivo em um estado inseguro. Em vez disso, você deve usar uma sessão de manutenção.

Há três estágios para usar recursos para dispositivos de serviço: baixar os recursos, aplicar uma atualização de repositório de chaves confiável (se necessário) e criar uma sessão de manutenção.

Baixar um recurso

Você pode baixar um recurso usando o comando azsphere device capability download. Você deve ter acesso ao locatário que possui o dispositivo e acesso à Internet para baixar um recurso. Por padrão, o dispositivo conectado no momento é usado. Quando vários dispositivos estiverem conectados, especifique o endereço IP, a ID do dispositivo ou a ID da conexão local de um dispositivo conectado no --device parâmetro. Ao baixar um recurso para um dispositivo desconectado, forneça uma ID de dispositivo no --device parâmetro.

Para baixar a funcionalidade de um dispositivo anexado:

  1. Faça logon no locatário do Azure Sphere no qual o dispositivo é reivindicado.

  2. Use o comando a seguir com os --type parâmetros e --destination para baixar um arquivo de funcionalidade para o dispositivo anexado. Por exemplo:

    azsphere device capability download --type fieldServicing --destination <capability-file>
    

    Substitua <capability-file> pelo local em seu computador no qual armazenar o arquivo de funcionalidade.

Para baixar a funcionalidade para um dispositivo não anexado:

  1. Faça logon no locatário do Azure Sphere no qual o dispositivo é reivindicado.

  2. Use o comando a seguir com os --deviceparâmetros , --typee para --destination fazer download de um arquivo de funcionalidade para o dispositivo desconectado. Por exemplo:

    azsphere device capability download --device <deviceID> --type fieldServicing --destination <capability-file>
    

    Forneça a ID do dispositivo para o qual você precisa do recurso e substitua <capability-file> pelo local em seu computador no qual armazenar o arquivo de recurso.

Atualize o armazenamento de chaves confiável, se necessário

Se um dispositivo não estiver conectado à Internet, existe a possibilidade de que o dispositivo não confie no recurso. Isso ocorre quando o AS3 atualiza sua chave de assinatura de imagem com a qual assina todas as imagens, incluindo imagens de funcionalidade, mas o dispositivo não tem essa chave atualizada em seu repositório de chaves confiável. Qualquer dispositivo conectado atualiza automaticamente seu armazenamento de chaves confiável, mas se o dispositivo não estiver conectado, isso pode não ter ocorrido.

Para remediar isso, consulte as instruções detalhadas aqui.

Criar uma sessão de manutenção

Para fazer a manutenção de um dispositivo, crie uma sessão de manutenção selecionando um recurso. Cada vez que o comando azsphere é emitido durante a sessão, a funcionalidade selecionada é passada para o dispositivo, permitindo que o dispositivo execute o comando apesar de seu estado bloqueado. O arquivo de funcionalidade não é armazenado persistentemente no dispositivo, portanto, o dispositivo permanece bloqueado e protegido. Se outro computador for anexado posteriormente ao dispositivo sem acesso ao arquivo de funcionalidade, ele não poderá modificar o dispositivo.

Para criar uma sessão de manutenção:

  1. Conecte o dispositivo ao PC usando a interface de programação e depuração.

  2. Use o comando azsphere device capability select com o parâmetro --capability-file< capability-file>. Substitua <capability-file> pelo caminho do arquivo especificado quando você baixou o recurso.

    Depois de selecionar o arquivo, sua sessão será iniciada. Cada vez que o comando azsphere é executado durante a sessão, as informações de funcionalidade são passadas para o dispositivo, desbloqueando assim a comunicação. A funcionalidade é armazenada em seu computador e está associada aos seus dados de logon do Windows ou do Linux, não com o logon do Azure Sphere. A sessão de manutenção se aplica a todos os comandos azsphere direcionados ao dispositivo do computador, não apenas àqueles executados no prompt de comando atual.

Para encerrar a sessão de manutenção, use o comando azsphere device capability select --none

Quando esse comando for bem-sucedido, as informações de funcionalidade não serão mais passadas para o dispositivo. Se você não encerrar a sessão, na próxima vez que emitir um comando azsphere deste computador, a funcionalidade atual do dispositivo será passada junto com o comando e, portanto, o comando falhará se você estiver trabalhando com um dispositivo diferente. Se você excluir o arquivo de funcionalidade sem encerrar a sessão de manutenção, o próximo comando avisará que o arquivo de funcionalidade selecionado está ausente e limpará a seleção para quaisquer comandos adicionais.