Cuprins:

DragonBoard Com OBD: 12 pași
DragonBoard Com OBD: 12 pași

Video: DragonBoard Com OBD: 12 pași

Video: DragonBoard Com OBD: 12 pași
Video: Skyrim: The Dragonborn Comes | EPIC VERSION (feat. @Colm_R_McGuinness​) 2024, Noiembrie
Anonim
DragonBoard Com OBD
DragonBoard Com OBD

Através da leitura do protocolo OBD2 do carro, is possível receber informações do veículo. Utilizând un DragonBoard 410c venim să lucrăm în acest proiect, și să avem acțiune sau caminho detaliat pentru a reproduce acest lucru.

Acest proiect a fost făcut cu parceria com a #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora care permitiram că tivéssemos acesso aos melhores hardwares, alem do contato com os melhores profissionais for contribuir com o development.

Participă la acest proiect:

Temos total interesse em help você a concluir o seu projecteto, então não deixe de entrar em contato conosco!

Pentru a urmări acest proiect în engleză, faceți clic aici:

www.instructables.com/id/DragonBoard-and-OBD2/

A estrutura acestui proiect include următoarele componente, conforme prezentate în imaginea acima:

  • Qualcomm DragonBoard 410c
  • Interfață Bluetooth OBD2 ELM327
  • Dongle USB 3G / 4G
  • Carregador Veicular de Inversão de Tensão (110v)

Pasul 1: Fazendo O Setup Inicial Da DragonBoard 410c

Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c

Utilizând un Qualcomm DragonBoard 410c, inițiază o proiecție cu o instalație de distribuție Linaro pe Linux, care ne permite configurarea completă a dispozitivului.

Pentru a crea imaginea lui Linaro pentru un DragonBoard, utilizați Ubuntu, păr VirtualBox, folosiți FastBoot, care este aplicativ bazat pe Linux. Este necesar să fiu în mediu Linux pentru putere instala-lo.

Pentru instalarea Fastboot, accesarea Terminalului său Virtual Machine Ubuntu, și digite:

sudo apt-get android-tools-fastboot

  • Pentru instalarea lui Linaro, trebuie să trecem prin 2 treceri importante:

    • Instalând o BOOTLOADER
    • Nome do arquivo: dragonboard410c_bootloader_emmc_linux-79.zip

      • https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
      • Retire os arquivos de dentro do ZIP
      • Pasta intra:

        cd / NomeDaPasta (caminho da paste descompactada)

      • Fazer sau comandă:

        dispozitive sudo fastboot

      • Resposta esperada:

        (hexazecimal) fastboot

      • Então digite:

        sudo./flashall

      • Resposta esperada:

        terminat. timpul total 1.000s (sem erori)

        (sem erori)

    • Instalând o Sistem Operațional

      • https://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
      • Baixar dois arquivos:
      • boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

        Este arquivo este a ultima versiune (Junho / 17) și o nume viitor poate fi modificat. A base do name that você deve buscar is “boot-linaro-NomeDaVersão”. Nesta versão o name este „Stretch” și a fost anterior „Jessie”

      • linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz

        Este arquivo este a ultima versiune (Junho / 17) și o nume viitor poate fi modificat. Procurați prin „linaro-NomeDaVersão-alip”

      • Retirar os arquivos de dentro do. GZ
      • Intră na pasta „raiz” în relația cu arhivii compactați

        exemplu: „/ Downloads” care este o locală unde arhivii sunt descărcați

      • Între com comenzi:

        dispozitive sudo fastboot

        sudo fastboot flash boot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img

      • Resposta esperada (lembrando que o tempo pode variar):

        terminat. timp total: 100.00s

  • Conectați mouse-ul, tastatura și monitorul / televizorul pe portul HDMI
  • Folosi:

    • Usuário: linaro
    • Senha: linaro
  • Abra a interface Lxterminal e faça o download from list de atualizações dispuníveis dos pacotes instalados:

    sudo apt-get update

  • Realizați o instalație de două pacote disponibile folosind codul:

    sudo apt-get upgrade

Dicas: O Linaro tem um boot extrem de rapid, și o comunitate destul de engajată pentru soluție de probleme.

Pasul 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo

Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo

Comece com a installationation dos applicatives that serveão de client for o GPS, sendo they o GNSS-GPSD, o GPSD e o GPSD-CLIENTS. Faça isso using or command:

sudo apt-get install gnss-gpsd gpsd gpsd-clients

Cu ele instalate, vocea precisă va rămâne câteva comenzi pentru a începe sau a aplica, são ele:

sudo systemctl start qdsp-start.servicesudo systemctl start gnss-gpsd.servicesudo systemctl start qmi-gps-proxy.service

Leve sua DragonBoard 410c pentru um local aberto, com visada pentru o céu, e digite no terminal:

gpsmon –n

Pelos testes realizados, o tempo médio até as informações começarem a aparecer na tela, este de căutare de 10 minute. Isso varia muito da localização da DragonBoard, quantitate de prédios ao seu redor, além de alte barreiras naturais that possam atrapalhar a reception do sinal do GPS.

Pentru a obține capturarea informațiilor și a mandatului pentru un număr, utilizați codul abaixo, modificând sau însoțind site-ul dvs.:

Pasul 3: Instalarea O Dongle USB 3G / 4G

Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G
Instalarea O Dongle USB 3G / 4G

Există câteva forme de fază pe DragonBoard 410c accesând un 3G / 4G:

  • Instalarea unui Shield / BreakoutBoard cu Modem GSM și slot pentru SimCard;
  • Utilizați un Dongle USB 3G / 4G;

Pentru acest proiect optam pelo Dongle USB 3G / 4G de la Huawei model E3272, facilitatea de a obține acest dispozitiv.

Pentru configurarea modemului, puterea de utilizare a terminalului (cu aplicația WVDial), porem sau mai ușor, este ușor de utilizat cu o interfață grafică interfață grafică (GUI) de Linaro. Faça da următoarea formă:

  • Cu o conexiune USB Dongle, faceți clic pe butonul de așteptare nu ícone de „redesenare” nici un cant inferior de țesut.
  • „Editați conexiunile”> „Adăugați”
  • Scrieți o opțiune: „Mobile Broadband”
  • Faceți clic pe „Creați”

Siga a tela de instalație a sistemului operațional, conforme imagini acima, configurând o operatoare de telefonie conformă sim card comprado. Pentru criza acestui proiect, folosim un Sim Card da Tim (și un modem inițial vândut pe Vivo).

Pasul 4: Transformarea unui hotspot / punct de acces WiFi DragonBoard 410c Em

Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi
Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi
Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi
Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi
Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi
Transformând un DragonBoard 410c Em Hotspot / Access Point WiFi

Pentru a utiliza un DragonBoard 410c ca un roteador wifi (acum că v-ați configurat o conectivitate cu internet), o modalitate mai simplă este să utilizați o interfață de sistem de tip própria. Siga os passos abaixo:

  • Clique no botão direito no ícone de “redes” no canto inferior direito.
  • „Editați conexiunile”> „Adăugați”
  • Scrieți opțiunea „WiFi”
  • Faceți clic pe „Creați”

Coloque o name da rede that você quer criar no field "SSID" e depois altere o “Mode” for “Hotspot”.

Pentru a garanta funcționarea:

  • A se vedea „Setări IPv4”
  • A se vedea „Metoda” este marcat ca „Partajat pe alte computere”

Pasul 5: Accesați un DragonBoard 410c Por SSH Sem Fio, Utilizând O Hotspot

Accesând DragonBoard 410c Por SSH Sem Fio, Utilizând O Hotspot
Accesând DragonBoard 410c Por SSH Sem Fio, Utilizând O Hotspot

Criamos um jeito de acessar a placa remotamente, independent da forma that ela esteja conectada, não dependendo de estar próxim a Dragonboard pentru conectar direct la ela, ou ao wifi em that ela esteja conectada. Este o metodă de conexiune a serviciilor Linux de la Amazon.

Vino instalând Auto SSH, folosind codul abaixo.

sudo apt-get install gcc make

wget https://www.harding.motd.ca/autossh/autossh-1.4e.tgz tar -xf autossh-1.4e.tgz cd autossh-1.4e./configure make sudo make install

Agora vamos gerar uma chave criptografada com padrão de segurança RSA. Esta chave serve for that a pessoa that a tenha, tenha autorização for access to the instância do endpoint exclusivo no Linux, através do IP public do modem 3G, obiectiv principal this passo. Na sequência, o cod fază la o copie da chave pentru o repozitie de chaves confiáveis do Linux, garantând chiar mai multă confidențialitate pentru conexiune.

ssh-keygen -t rsa

scp ~ /.ssh / id_rsa.pub user @ remote_server:.ssh / authorized_keys autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 user @ remote_server

Așadar, am terminat de transformat un DragonBoard 410c cu un server cloud! / o /

Pasul 6: Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2

A interface of comunicação com os carros é feita através from porta OBD2. A informação that transita nesta porta precise ser traduzida, e pentru isso precisamos de um interpretador that trate os dados. Aveți două opțiuni pentru acest hardware: ELM327 sau STN1170.

Pentru acest proiect, utilizați un dispozitiv Bluetooth cu cip bazat pe ELM327.

Important de remarcat faptul că disponibilitatea acestui hardware nu reprezintă în mod necesar versiunea ORIGINAL a ELM327. A maior parte disponível está na versão 1.5, care a fost când chip original a fost clonat și plasat la vânzare pe piață. Chipset original este versiunea 2.2. O evoluție a acestui versiune trece la chip mai multe informații despre os caros mai noi. E important saber disso, pois dependendo dos testes realizados, poderá ou não conseguir get determinated information de veicles mais novos.

De posse do your device OBD2 Bluetooth, encontre a porta OBD2 do seu carro. Ela you can be localized logo abaixo do volante, no console central ou perto da caixa de fusíveis. O local varia destul de între ca montatoare și modele. Opțiunea pentru localizare este să folosiți această unealtă:

Acess a DragonBoard 410c com SSH, using seu Notebook (lembrando that agora você está no carro, e não possui mais uma tela para conectar a placa).

Asigurați-vă că dispozitivul OBD2 Bluetooth pentru inserare nu conector do carro, este pasul abaixo pentru ter controlul conectivității bluetooth:

sudo bluetoothctl

împerecheabil la agent la scanarea implicită a agentului activatÎn acest moment este important să se copieze o adresă MAC precisă pentru următorii pași

Digit:

ai încredere în MACADDRESS

pereche MACADDRESS

În acest moment trebuie să apară o solicitare pentru cifră sau PIN de pareamento do Bluetooth OBD2.

O PIN este în general 1234 sau 0000

Apasă la o țesătură de succes de conexiune, digitizând acest comandă, vocea sai a programului de control pe Bluetooth digitând:

părăsi

Acum este precizat să faceți un dispozitiv "BIND" cu un serial:

sudo rfcomm bind 0 MACADDRESS 1

Pentru validarea sau succesul operațiunii digitale:

ls / dev

A porta “Rfcomm0 deve estar na lista.

Pasul 7: Ligând un DragonBoard 410c Ao OBD Do Seu Carro prin Bluetooth - Passo 2/2

Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligând un DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2

Obiectivul acestui pas asigură funcționarea comunicației între dispozitive:

ELM327, DragonBoard 410c și Veículo

Se aplică aplicația „Screen” pentru trimiterea mesajelor pe Porta Serial

sudo apt-get ecran de instalare

A Porta Serial va fi folosit pentru trimitere și primire de comenzi AT între un DragonBoard 410c și o ELM327.

Pentru mai multe informații despre Comandos AT, acces:

ATENÇÃO:

Tome muito cuidado nesta parte! Todas as informações enviadas para o dispositivo conectado ao carro, putereão ser interpretadas e enviadas ao carro de mod erradat și ocazionat o mal-funcționare do seu carro! Estude bastante os comandos antes de tentar inovar nos comandos. Recomendamos que siga as instruções abaixo detalhadamente.

Siga a sequência de comandos abaixo para dar início à comunicação:

  • Această funcție se deschide terminalul de comunicație serial.

    ecran / dev / rfcomm0

Assim que o terminal carregar, digite os commandos abaixo nesta sequência (e entenda o que cada um them faz):

  • Reinicia o dispozitiv. As vezes você precisará fazer isso.

    ATZ

  • Liga a funcționalității de lucru a liniei noastre de comandă, facilitând o vizualizare.

    ATL1

  • Liga os cabeçalhos dos comandos.

    ATH1

  • Liga o spațiu între palavras.

    ATS1

  • Definiți un protocol de comunicație pentru carro pentru „Automático”.

    ATSP0

Teste de comunicație Final:

  • Digite fără consolă:

    ATI

  • El trebuie să returnați „ELM327 v1.5” sau o versiune a ELM a dispozitivului dvs.
  • Isso prova that o ELM327 este comunicând cu o placă sem probleme, și putem prosecui.

Dica

Pentru a aplica aplicația „Screen” este necesar să deschideți: Ctrl-A urmat de Ctrl-D

Pasul 8: Ligând un DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD

Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD

PyOBD este o bibliotecă de Python specifică pentru comunicație cu comanda OBD2 dos veicles. Com ela, we can extrair diverse informações da rede de comunicação do carro, incluindo dados como velocidade e até mesmo erros da parte elétrica.

Pentru această etapă, precis garantăm că următoarele biblioteci sunt instalate în Linaro da sua DragonBoard 410c:

  • PIP - Gerenciador de módulos do Python

    sudo apt-get install python-pip

  • SetupTools - gestor de arquivos de instalação

    sudo pip install -U pip setuptools

  • Wheel - formatator de arquivos pentru instalație

    sudo apt-get install python-wheel

  • OBD - biblioteca pentru interpretare de date OBD

    sudo apt-get python-obd

  • GPS - biblioteca com dados do gps

    sudo pip instalează gps

  • Cereri - módulo de solicitações

    solicitări de instalare sudo pip

Pentru a se știi o bibliotecă de Python funcționează corect, precis rămânem la comenzi:

sudo python

În acest moment, cursorul do terminal va muta pentru acest ícone „>>>” indicând că programul este rodând Python. Podemos começar a digitar os commandos for serem interpretados conforme abaixo.

  • Comece importando a biblioteca

    import obd

  • Pentru a face conexiunea cu o utilizare serială a comenzii

    conexiune = obd. OBD („/ dev / rfcomm0”)

  • Pentru a descoperi se Python se obține informații suplimentare despre carro, trecând pelo Bluetooth, ELM327 até ajunge no carro, digite:

    connection.protocol_name ()

Pasul 9: Informații suplimentare cu Carro Usando Python

Informații suplimentare despre Carro Usando Python
Informații suplimentare despre Carro Usando Python

Vamos criar um arquivo chamado: OBD.py, conforme instruções abaixo e code na sequência.

Importăm o bibliotecă OBD pentru Python pentru a începe ca conexiuni.

Por motivos desconhecidos, a prima conexiune cu noi hardware, falha sempre. Na segunda tentativa, funcționează întotdeauna. Por isso, no code verá that há duas linhas de conexão (con).

Seguindo o funcționare do code, com a conexão feita, iniciamos um loop infinito que busca os dados do OBD, formata de acord cu parametrii stabiliți. Depuneți o adresă URL, utilizând Query String, pentru a putea trimite către serverul folosind metoda POST.

Nici un exemplu de abaixo pegamos ca informații următoare:

  • RPM
  • Velocidade
  • Odometru *

As funções para captura dos dados utilizam dois parâmetros. De exemplu, folosind [1] [12] estamos buscando [módulo] [PID]. Această listă poate fi găsită în:

Por último, a humm a URL com all as informationções são concatenadas e adicionadas em um arquivo, chamado "obd_data.dat".

Cod pentru OBD.py:

import obdimport timeodoInicial = -1 paramOdo = 0 #Conect OBDprint "Primeira conexao" con = obd. OBD ("/ dev / rfcomm0") print "Segunda conexao" con = obd. OBD ("/ dev / rfcomm0") while True: respRPM = con.query (obd.commands [1] [12]) print respRPM respVelo = con.query (obd.commands [1] [13]) print respVelo respOdo = con.query (obd.commands [1] [49]) print respOdo paramRPM = int (float (str (respRPM).replace ("revolutions_per_minute", ""))) paramVelo = int (float (str (respVelo).replace ("kph", ""))) paramOdo = int (float (str (respOdo).replace ("kilometer", ""))) url = "https://www.website.com/OBD?vel="+str(paramVelo)+"&rpm="+str (paramRPM) + "& odo =" + str (paramOdo) + "\ n" time.sleep (0.2) print url file = open ("obd_data.dat", "a +") file.write (url) file.close () tipăriți adresa URL

Depois da conexão e captura dos dados, vamos criar o arquivo chamado: envia_OBD.py

Esta parte do code fica mais simples. Começamos importando bibliotecas related to solicitações / envio de dados, using RESTFUL.

Criamos um while for enviar através de POST a URL da prima linie do arquivo that populado anteriormente OBDpy.p. Depois disso, para evitar care o dat seja enviat mai de uma vez, ea apaga aceasta linha do arquivo.

Cod pentru arhiv OBD.py:

solicitări de import

timp de import în timp ce este adevărat: încercați: time.sleep (0.2) url = "" cu open ('obd_data.dat', 'r') ca fin: data = fin.read (). splitlines (True) url = data [0] requests.post (url) cu open ('obd_data.dat', 'w') ca fout: fout.writelines (date [1:]) cu excepția: print 'exception'

Caso tenha algum problem copiando these codes, baixe os arquivos abaixo:

Step 10: Repetição De Scripts E Armazenamento De Dados Capturados Do Carro

Repetição De Scripts E Armazenamento De Dados Capturados Do Carro
Repetição De Scripts E Armazenamento De Dados Capturados Do Carro

Tudo o that was done até agora era orientado to garantir that a DragonBoard fizesse comunicação with os different components from solução, as a comunicação 3G, WiFi, Bluetooth, Dados do GPS, entre outros.

Vamos usar o código abaixo para editar o arquivo 'rc.local', care já tem algumas funções e comandos pré-definidos, e fica no diretório '/ etc'. Pentru a face ediția, utilizați comanda:

sudo nano /etc/rc.local

Acum precizăm configurarea inițializării tuturor proceselor, serviciilor și funcțiilor, criando rotinele pentru care funcționează automat până la inițierea unui Dragonboard. Folosim BASH pentru fazer isso. O BASH (Bourne-Again-SHell) este un aplicativ pentru interpretarea comenzilor Unix.

No next code, that the commands BASH, você precise will inserter or MacAddress by your device OBD / Bluetooth, and toom precise ter quite care to keep that o code seja colocado semper before to command "exit 0" that is a response of sucesso do system.

dacă [! -f / etc / ssh / ssh_host_rsa_key]

apoi systemctl stop ssh.socket || true dpkg-reconfigure openssh-server fi sudo systemctl start qdsp-start.service rfcomm bind 0 MACADDRESS 1 sudo python /home/linaro/Documents/FadaDoCarro/conectaGPS.py & sudo python / home / linaro /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & exit 0

A partir de agora, sempre que a placa for iniciada, ela já vai se conectar através do 3G e send os dados de GPS e OBD for o server escolhido.

Pasul 11: Dificuldades Encontradas

Dificuldades Encontradas
Dificuldades Encontradas

Listamos abaixo algumas barreira that encontramos ao longo do development do project, that resolvemos before of criar este Instructable, mas that is important alertá-lo, case esteja tendo dificuldades toom.

  • PyOBD

    É preciso ter muito cuidado na hora de transmitir os dados e comunicar com o carro. Întâi tentative, când a comunicație nu este așa cum este cu dispozitivul, trimitând câteva comenzi pentru o carro, și terminând cauzând o problemă na ECU. În acest moment o câmbiu automat não aceitava mais mudanças, ficou travado. Além disso, as luzes do painel começaram a piscar aleatoriamente. A solutionation for this event that occasionamos foi or desligamento dos cabos da bateria, mantendo assim by 15 minutes. Desta forma, forçamos o reset complet das ECUs do carro, returnando ele ao estágio original de fábrica, portanto cancelando qualquer command that tenhamos enviado erroneamente pela porta OBD

  • Linaro

    Tivemos um problem de boot no Linaro, când aleatoriamente o OS reiniciava. Această problemă a fost rezolvată pe tot parcursul dezvoltării proiectului, pela echipa do Linaro, care soltou uma atualização, e já construímos este tutorial folosind o informație mai atualizată

  • GPS na DragonBoard

    A Qualcomm Dragonboard 410c nu are antene GPS interne, și pentru o recepție mai bună de semnal, este necesar să instalați conectorul și să obțineți o antena exterioară. Pentru a face acest lucru, vă recomandăm să promovați o calitate Qualcomm:

Pasul 12: Referințe

Referențe
Referențe

Bootloader

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Linaro

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Cum se instalează o Linaro na DragonBoard 410c

www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/

Documentație GPS pentru DragonBoard

discuss.96boards.org/t/gps-software/170/16

Demo GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Conectând RaspberryPi à un OBD Bluetooth

gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/

Instruções para criação do túnel SSH

gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6

Instalând SSH fără Linux

ask.xmodulo.com/install-autossh-linux.html

Recomandat: