Performance/Qualidade-Raspberry-Thin Client

Raspberry Pi como Thin Client


Atenção!

Esse trabalho está em andamento, em qualquer momento podemos fazer atualizações ou alterações neste documento.Recomendamos que você faça um acompanhamento diário. E se você tiver alguma dica, contribua comentando no final desse post.

Se você estiver utilizando o Raspberry Pi como um cliente Thin Client e está querendo melhorar o seu desempenho, veio no local certo!!

O objetivo desse estudo é melhorar a performance do Raspberry Pi, como um cliente Thin Client, para acesso a máquinas remotas Windows via protocolo RDP. Para isso, realizamos um estudo onde foi levado em consideração Performance e Qualidade na visualização (imagem, fonte vídeo, áudio...)

Procuramos configurar o Raspberry Pi de uma forma que o cliente tenha a impressão de estar em sua própria máquina, fisicamente. As configurações abaixo, podem melhorar em até 70% a performance e qualidade do thin cliente.

A etapa de configuração será dividida em duas partes: Configurando Ambiente Windows e Configurando o Raspberry Pi como Thin Client


Os nossos testes foram realizados com o Raspberry Pi 2B acessando remotamente via RDP um cliente com SO Windows 7 e outro com Windows 10.

Configuração do Raspberry Pi 2 B:
·         CPU: 900MHz
·         Memória RAM: 1GB
·         Fonte de alimentção 5V/2A
·         Ethernet 10/100 (RJ45)
·         Cartão MicroSD Classe 4 (aconselhável classe 10, melhor desempenho)

Configurando Ambiente Windows

Nesta etapa será realizado algumas configurações que são de grande importância para o nosso objetivo: Configurando máquina Windows para realizar conexão RDP, alterando o algoritmo de compressão e configurando melhorias para conexões RDP no Windows.

1. Clicar no menu Iniciar e pesquisar por gpedit.msc e clicar com o lado direito do mouse e escolher a opção Executar como administrador

2. Navegar para Configuração do Computador, Modelos Administrativos, Componentes do Windows, Serviços de Área de Trabalho Remotas e Host de Sessão da Área de Trabalho Remota


3. Configure os itens desejados ou siga o modelo de configurações das imagens abaixo:

4. Em alguns casos, você pode escolher o melhor parâmetro que se adequar a suas necessidades 
 5. Aqui, configuramos o algoritmo de compactação de RDP para Otimizado para usar menos memória. Configure ao seu modo.
 6. Nesta etapa, damos prioridade o modo Otimizar para escalabilidade do servidor

Será necessário realizar mais algumas configurações no Windows, como habilitar o Acesso Remoto e desabilitarauto-tuning TCP.


Habilitar o Acesso Remoto no Windows


1.      Abrir Prompt de Comando como Administrador;
2.      No Prompt de Comando, entre com os seguintes parâmetros:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /t REG_DWORD /v "fDenyTSConnections" /d 0 /f {Enter}

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v "UserAuthentication" /d 0 /f {Enter}

fDenyTSConnections Habilita(0) ou Desabilita(1) o RDP do Windows
UserAuthenticationDefine se o modo de autenticação será em nível de rede ou não. Para máquinas, principalmente distro Linux, que não estão no AD realizar uma conexão RDP, o valor deve ficar como “0”.


Habilitar o auto-tuning TCP


      1.      Abrir Prompt de Comando como Administrador;
      2.      No Prompt de Comando, entre com os seguintes parâmetros:

netsh interface tcp set global autotuning=disabled {Enter}

Para verificar se foi desabilitado: netsh interface tcp show global

Caso queira reativá-lo: netsh interface tcp set global autotuning=normal

Configurando o Raspberry Pi

Estamos considerando que você já tem uma imagem instalada no seu Raspberry Pi.

Instalar o cliente FreeRDP

1.      Abrir o terminar e entrar com os seguintes parâmetros:

sudo apt-get update
sudo apt-get install freerdp-x11-dbg

Assim que o pacote for instalado, realize um teste no terminal com o seguinte parâmetro:
xfreerdp -sec-nla /v:NomeDoComputadorRemoto

O parâmetro -sec-nla, serve para evitar que seja solicitado suas credências ainda no terminal, o /v: é onde dever ser informado o nome da máquina remota

Para consultar uma lista completa de todos os parâmetros, digite no terminal xfreerdp --help

Parâmetros do FreeRDP Testado

Testamos uma grande maioria dos parâmetros do xfrerrdp que listamos abaixo o que tivemos um melhor resultado.

Parâmetros que testamos e tivemos um melhor desempenho e qualidade: 

xfreerdp +fonts -sec-nla --rfx-mode:video --nsc /jpeg-quality:82% --disable-wallpaper --disable-full-window-drag /cert-ignore -x l /gdi:hw --yes-osb --yes-bmp-cache /sound:sys:alsa  -- /f /w:1920 /h:1080  /v:NomeDoComputador

Script para automatizar conexão

Se quiser automatizar sua conexão, é só criar um arquivo com os seguintes parâmetros:


#!/bin/bash
echo "  ____     ___    _____           _____    ____
 |  _ \   / _ \  |  ___|         |_   _|  / ___|
 | | | | | | | | | |_     _____    | |   | |  
 | |_| | | |_| | |  _|   |_____|   | |   | |___
 |____/   \__\_\ |_|               |_|    \____|
                                                "
echo "DicasQueFunfa - Thin Client"
echo ""
check_process() {
  echo "$ts: checking $1"
  [ "$1" = "" ]  && return 0
  [ `pgrep -n $1` ] && return 1 || return 0
}

while [ 1 ]; do
  # timestamp
        ts=`date +%T`
        echo "  _   _    ___    __  __   _____     ____     ___      ____     ____    
 | \ | |  / _ \  |  \/  | | ____|   |  _ \   / _ \    |  _ \   / ___|  _
 |  \| | | | | | | |\/| | |  _|     | | | | | | | |   | |_) | | |     (_)
 | |\  | | |_| | | |  | | | |___    | |_| | | |_| |   |  __/  | |___   _
 |_| \_|  \___/  |_|  |_| |_____|   |____/   \___/    |_|      \____| (_)
                                                                         "
        read host;
        xfree="xfreerdp +fonts -sec-nla --rfx-mode:video --nsc /jpeg-quality:82% --disable-wallpaper --disable-full-window-drag /cert-ignore -x l /gdi:hw --yes-osb --yes-bmp-cache /sound:sys:alsa /f /v:$host"
        echo "$ts: begin checking..."
        check_process "xfreerdp"
  [ $? -eq 0 ] && echo "$ts: not running, restarting..." && `$xfree`
  sleep 5
done

Lembre de alterar a permissão do arquivo. Exemplo, caso você tenha criado um arquivo com o nome AutoRunRDP, abra o terminar e escreva

chmod +x AutoRunRDP


Lembrando que esse trabalho está em andamento, em qualquer momento podemos fazer atualizações ou alterações neste documento. 

Comentários

  1. Olá. To ensaiando pra colocar uma solução dessa em um cliente. Voce sabe me dizer se ele lê certificado digital pelo client rdp do raspberry? ele é agil ou o mouse fica meio se arrastando pra usar com o windows 10 já configurado pra usar um grafico bem simples?

    ResponderExcluir

Postar um comentário

ATENÇÃO!

É de inteira responsabilidade dos usuários seguirem as dicas postadas no Blog DicasQueFunfa.

Assim que possível, responderemos sua pergunta.
Seguir DicasQueFunfa no Facebook e no Google+:
facebook.com/DicasQueFunfa
https://plus.google.com/+DicasQueFunfaBr

LEIA-ME

Criar ferramentas e scripts que facilitam seu trabalho no dia a dia, solucionar problemas, documentar tudo e criar o passo a passo de como resolver, é uma tarefa que requer tempo e disposição. Por esse motivo, precisamos de sua contribuição.




Apesar de não ser obrigatória, a sua doação é muito importante para continuarmos criando ferramentas, scripts e procedimentos!
Com sua contribuição manteremos o funcionamento e desenvolvimento dessas e outras soluções.