[Tutorial] Instalação do SMS Power View no Linux

Iniciado por Sampayu, 03 de Setembro de 2014, 02:17

tópico anterior - próximo tópico

carlosakibar

Vi que é uma luta fazer funcionar esse software com raspberry 3/3B/4 seja 32 bits ou 64 bits.  Apesar de seguir todas as recomendações descritas neste tutorial ...só consigo fazer funcionar no Windows via cabo USB.

Acredito por envolver o driver do dispositivo ou algum erro no proprio software powerview no raspberry. 
Tentei tanto no raspberry OS 32, 64 bits  e com o ubuntu server 22.10 32/64

Por favor aqueles no qual o powerview ultimo funcionou postem o retorno do comando  ( lsusb) que mostra qual é o chip responsavel pela comunicacao serial
meu chip da comunicacao serial é o:
Bus 001 Device 009: ID 067b:23a3 Prolific Technology, Inc

o driver usbserial foi carregado  e atachado a /dev/ttyUSB0
o software funciona abrea porta mas nao le os dados ...
consigo ver a pagina no localhost:8080 mas nada dos dados
no modo debug fica tentando ler eternamente

seria interessante também algum lugar onde as bibliotecas estivessem disponiveis, pois os links estao na maioria quebrados.

fiz todo o processo porém nada de ler os dados no raspberry, somente funciona com o mesmo cabo no windows. Alguma dica??? Obrigado.



carlosakibar

Problema na porta USB do raspberry. Troquei o cabo para outra porta USB do raspberry e funcionou. 

gpompeo

Olá,

Eu já tentei seguir os tutoriais e todas as correções que encontrei mas não consigo iniciar de fato o SPV.

No momento este é o erro que estou encontrado o seguinte erro:

pi@raspberrypi:/opt $ sudo /opt/powerview/powerview start --no-gui -d
Iniciando como Serviço...
Criando link simbolico para USB-Serial.
SMS Power View iniciado com sucesso.
pi@raspberrypi:/opt $ Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
Feb  08 19:55:25 [                                 common.Constantes]: [      main - INFO ] PATH SISTEMA.PROPERTIES: /sistema.properties
Feb  08 19:55:25 [                              servico.SMSysServico]: [      main - DEBUG] Inicializando o Powerview: [V4.07.00.07]
Feb  08 19:55:25 [                   comunicacao.FactoryPortaSerials]: [      main - DEBUG] Criou Lista!
Feb  08 19:55:26 [                                              root]: [      main - ERROR] Exception in thread "main"
Feb  08 19:55:26 [                                              root]: [      main - ERROR] java.lang.UnsatisfiedLinkError: 'long jssc.SerialNativeInterface.openPort(java.lang.String, boolean)'

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at jssc.SerialNativeInterface.openPort(Native Method)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at jssc.SerialPortList.getUnixBasedPortNames(SerialPortList.java:333)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at jssc.SerialPortList.getPortNames(SerialPortList.java:296)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at jssc.SerialPortList.getPortNames(SerialPortList.java:178)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.alerta24h.comunicacao.FactoryPortaSerials.getListaPortas(FactoryPortaSerials.java:21)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.alerta24h.comunicacao.GerenteComunicacao.getListaPortas(GerenteComunicacao.java:48)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.alerta24h.comunicacao.GerenteComunicacao.getChipset(GerenteComunicacao.java:54)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.sms.powerview.factory.VerificaTipoNobreak.identificarTipoUsbByChipset(VerificaTipoNobreak.java:67)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.sms.powerview.factory.VerificaTipoNobreak.identificarTipo(VerificaTipoNobreak.java:51)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.sms.powerview.factory.SMSysFactory.verificaNobreak(SMSysFactory.java:75)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.sms.powerview.factory.SMSysFactory.createNobreak(SMSysFactory.java:88)

Feb  08 19:55:26 [                                              root]: [      main - ERROR]     at br.com.sms.powerview.servico.SMSysServico.main(SMSysServico.java:61)


Pelo que procurei, não vi este erro em nenhum outro post.

Alguma ideia de como posso corrigir?

Estou usando:
Raspberry Pi OS 64-bits
Raspberry Pi 4
jdk-19.0.2 (mas já tentei openJDK 11)
SMS PowerView 4 (mas entei o 3 também)

Grato!
G.

Sampayu

Pessoal, só para esclarecer: eu sou notificado a respeito de todas as mensagens que são enviadas aqui para este tópico, por isto fico sabendo dessas panes que ocorrem com os Raspberry Pi. No entanto, como não possuo nenhum dispositivo Raspberry Pi, não tenho como fazer nenhum tipo de teste, investigação etc., e daí fico impossibilitado de tentar ajudar e (talvez, quem sabe) conseguir encontrar alguma solução ou paliativo.

O que posso comentar a respeito desse erro é que a palavra jssc ("biblioteca de comunicação serial via Java") refere-se a uma incompatibilidade entre muitas que existem entre o Raspberry Pi e o SPV. Essa especificamente envolve a arquitetura da JVM (Máquina VIrtual Java) usada pelo Raspberry Pi e a JVM requerida pelo SPV (utilitário SMS Power View). Isso porque o pessoal da Legrand, ao desenvolver o SPV, desenvolveu-o pensando apenas em computadores que usem processadores de arquitetura Intel X86 e X86_64, i.e. não levou em consideração que existem dispositivos que usam processadores de arquitetura ARM - como é o caso dos Raspberry Pi.

Uma das consequências disso é que algumas bibliotecas usadas pelo SPV são da JVM específica para processadores de arquitetura Intel X86 e X86_64: não funcionam quando o processador é ARM, e portanto não funcionam em Raspberry Pi.

Essa biblioteca jssc, por exemplo, é uma biblioteca Java de arquitetura x86 e o arquivo dela fica em /opt/sms/libs/jssc-2.8.0.jar (isso para quem instalou o SPV conforme o tutorial deste tópico e, por isto, colocou o SPV em /opt). Isso pode ser verificado por exemplo executando-se um comando como este:

tail /opt/sms/libs/jssc*.jar |awk -F"/" '{print $3}'

...que mostra que a biblioteca jssc usada pelo SPV foi escrita para a arquitetura Intel X86 (de 32 bits e de 64 bits).

Um pacote com o libjssc-java, por exemplo, talvez seja útil para instalar a versão ARM64 dessa biblioteca em um local como /usr/share/java/jssc-2.8.0.jar, de onde então pode-se criar um link simbólico após se fazer backup da biblioteca original do SPV. Exemplo:

Fazer backup da biblioteca original:
sudo mv /opt/sms/libs/jssc-2.8.0.jar /opt/sms/libs/jssc-2.8.0.jar.bkp
Criar um link simbólico com o mesmo nome e caminho da biblioteca original, porém apontando para a biblioteca que foi instalada:
sudo ln -s /usr/share/java/jssc-2.8.0.jar /opt/sms/libs/jssc-2.8.0.jar

Isso fará /opt/sms/libs/jssc-2.8.0.jar apontar para /usr/share/java/jssc-2.8.0.jar (que será a biblioteca em versão para processador de arquitetura ARM64).

Se isso não funcionar, outra tentativa que pode ser feita (mas que dificilmente vai funcionar) é baixar a versão multiplataforma da biblioteca jSerialComm, salvá-la numa pasta qualquer e então recriar aquele link simbólico, fazendo o link simbólico /opt/sms/libs/jssc-2.8.0.jar apontar para o /caminho/para/o/arquivo/de/biblioteca/jSerialComm-2.9.3.jar

Mas, se eu tivesse de apostar, eu apostaria que mesmo que esse problema de incompatibilidade da biblioteca jssc seja resolvido, logo após o solucionamento o SPV passará a mostrar alguma outra mensagem de erro, relacionada a alguma outra biblioteca Java que o SPV utiliza mas não é compatível com a arquitetura de hardware do processador do Raspberry Pi.  :P

Algo que observei ao longo dos anos é que a maioria das "panes" com Raspberry Pi está relacionada à comunicação serial. Como o nobreak fornece dados em formato serial do tipo RS-232 porém o SPV está configurado para ler dados em formato serial do tipo USB (a partir de alguma porta USB do computador ao qual o nobreak está conectado), o SPV utiliza um driver "serial RS-232 para serial USB" e um monte de bibliotecas Java que fazem essa "tradução simultânea" entre os dados seriais oriundos do nobreak e os dados USB oriundos do computador, ora convertendo os dados seriais RS-232 do nobreak para o formato serial USB (para o computador "entender o que o nobreak disse"), ora fazendo o caminho inverso, i.e. convertendo os dados seriais USB do computador para o formato serial RS-232 (para o nobreak "entender o que o computador disse").

Se algum dia eu comprar um Raspberry Pi, vou passar a "alimentar" este tópico com soluções que eu acaso descubra. Mas por ora infelizmente só consigo explicar por alto o que parece estar ocorrendo e lhes desejar boa sorte nessa árdua empreitada - principalmente porque a Legrand pelo visto não parece estar preocupada em modernizar o SPV - pelo menos não o suficiente para que ele possa funcionar "nativamente" com processadores de arquitetura ARM.
Yuri Sucupira ("Sampayu")