quinta-feira, 11 de maio de 2017

Windows 8.1 Patches - C++ 2015 e dot net 3.5



Não é de se estranhar que a M$ está desesperadamente tentando empurrar o Windows 10 a todo custo, há várias teorias sobre isso, e todas elas remetem a M$ simplesmente lucrar mais. Enfim, não estou aqui pra discutir isso, a questão aqui é que aparentemente para forçar o uso do Windows 10 a M$ está deixando o suporte de outros sistemas a "Deus Dará" e nesse caso estou falando do Windows 8.

Pra mim o Win8.1 + o Classic Start atualmente é o melhor sistema da M$ depois do Windows XP, é uma pena que aparentemente o suporte a ele esteja praticamente largado, pelo motivo já citado acima. Os 2 problemas que mais arranca os cabelos dos usuários do Win8.1 é o MS C++ 2015 responsável pelo erro da falta da DLL api-ms-win-crt-reap-l1-1-0.dll, que geralmente ocorre depois de instalar o Office 2016 o ITunes o Photoshop etc, e também a incapacidade de instalar o dot.net 3.5 automaticamente.

Vamos pelo mais fácil, o dot net 3.5 eu encontrei um instalador simples e eficaz o dotNetFx35_W8.1_x86_x64.exe, basta baixa-lo e o instalar e tudo estará resolvido.

Agora o MS C++ 2015 responsável pelo erro da dll "api-ms-win-crt-reap-l1-1-0.dll" é um pouco mais complicado, vamos no passo a passo:

1. Desative, mesmo que temporariamente o Windows Update: Painel de Controle --> Windows Update --> Alterar Configurações --> Nunca Verificar se há atualizações

2. Baixe e rode o Windows8.1-KB2999226-x64.msu (lembrando que esse é somente para versão x64)

3. Baixe e rode o vc_redist.x64.exe (também para versão x64)

Pronto ! parece simples quando está tudo mastigadinho né ? Todos os arquivos que você precisa estão nesse link: https://mega.nz/#F!sJR3FYzR!zCgIzRRrC2fKkn2swTdgjQ

Se seu Windows é a versão 32 bits, procure os arquivos equivalentes na versão 32, apesar que só aconselho você a usar esta versão se sua CPU não suporta x64, que venhamos e convenhamos, nesse caso nem deveria rodar o Windows 8.1.

sexta-feira, 21 de abril de 2017

Desisti do Linux, de novo !


Antes que você, xiita do código livre levante a mão para atirar a primeira pedra, já vou avisando, eu to nessa luta a provavelmente muito mais tempo que você !

É claro que eu, nem você jamais vai deixar de usar o Linux por definitivo, ele está por todo lugar, no seu celular, no seu roteador nas páginas da web etc, o que eu estou falando aqui é onde ele realmente não tem mais jeito, no computador pessoal. Não culpo o Linux em si, pois ele é somente o kernel, eu culpo as distribuições que aparentemente não sabem o que estão fazendo, e ficam criando firulas e perfumarias e esquecem de acertar o básico, a funcionalidade.

Vou contar um pouco da minha história no Linux. Desde o início a experiência não foi boa, isso foi a que, mais ou menos a 15 anos atras quando a Red Hat distribuía gratuitamente as ISOs na internet, sofrivelmente (a internet naquela época não era nada boa) eu baixei uma ISO e o resultado não foi muito bom, por falta de experiência minha eu acabei apagando todos os meus arquivos e ainda assim não consegui fazer ele rodar. Desisti, alguns anos depois surge o Kurumin, apesar de cheio de bugs e bem espalhafatoso, funcionava ! Que emoção ! Mesmo assim, depois de uma surra com o grub, eu consegui deixar como Dual Boot com o Windows, pois eu ainda queria rodar joguinhos como HalfLife, Counter Strike etc, Wine ?? nem pensar que naquela época ia rodar jogos.

Quando eu desisti de investir em Hardware, eu comprei um XBox 360, pois a ideia de ter jogos pirateados sempre me atraiu, eu já tinha um console cheio de jogos, desisti de ter um PC com jogos, sendo assim, fiquei livre para começar a usar o Ubuntu. Velhos problemas voltam a assombrar, como que eles ainda não resolveram isso ? Menus estranhos, falta de driver para impressora, atualizações bugadas, compartilhamento de arquivos sofrível pelo Samba, e muitas horas foram perdidas, com um comando mais cabeludo que o outro, encontrado em fóruns que jamais iria encontrar de novo até que finalmente deixei o sistema do jeito que eu queria.

Não vou mentir, fui feliz com o Ubuntu por alguns anos, sempre nessa luta de sempre ter que lapidar o sistema, e muitas horas eram perdidas para isso, não ligava, eu até que gostava do desafio. Até que terminei a faculdade e arrumei um emprego. O tempo era curto, mas colegas do trabalho gostavam de jogar o multiplayer do HL2 depois do serviço pela internet, ficaram decepcionados que eu não tinha placa de vídeo boa pra isso, até que um deles me deu sua placa de vídeo antiga, só pra eu me enturmar. Foi ai que os meus velhos problemas com o Linux voltaram.

O Driver da ATI era sofrível, e terrível pra instalar (para Windows era só next netxt finish), tudo bem, culpa da ATI, mas já não tinha mais tanto tempo como antes pra ficar brigando pra compilar pacotes deb, para ficar sem sistema a cada tentativa falha de instalação de driver de vídeo, mesmo assim eu consegui, mas não por muito tempo. Para o meu azar, a versão LTS do Ubuntu já estava no fim, e com o fim do suporte, eu atualizei para a versão seguinte, só que aquele driver de vídeo da ATI não funcionava mais, e nem teria mais um novo. Ok Windows, você venceu ! e é claro, magicamente tudo funcionava muito bem e de primeira no Windows, era até gratificante, a única coisa que enchia o saco eram os Adwares e Spywares da vida, mas tudo tem seu preço.

Assim foi durante muitos anos, e sempre tudo muito simples, afinal de contas, eu preciso de simplicidade, não sou mais aquele adolescente que tinha a tarde toda pra ficar procrastinando para deixar o sistema do jeito que eu queria, até porque meu XBox 360 já tinha se tornado obsoleto e voltara a usar o PC como principal fonte de jogos comprados pela Steam (agora eu tenho dinheiro pra comprar joguinhos, olha que evolução !), mas eu gosto de desafios, esse ano eu resolvi, vou dar mais uma chance para o Linux.

Comecei pelo Ubuntu novamente, e os mesmos velhos problemas, até pra criar um simples atalho, pra compartilhar arquivo na rede, etc etc etc, tudo me forçava a usar comandos no shell que eu sinceramente não tenho mais cabeça pra decorar, mais ainda interface é confusa e pesada, ahh, nesse meio tempo eu comprei um notebook também além do PC Desktop, e adivinha só, o Ubuntu não consegue ajustar o Brilho da tela ! claro que isso tinha solução, mas novamente tinha que lapidar arquivos de configuração do xorg que sinceramente já não tenho mais saco pra isso. Tentei várias distros, a maioria é claro, um fork do Ubuntu, todas elas, todas, apresentavam algum problema, seja ela qual for. A que mais funcionou bem pra mim foi o Ubuntu Mate, brilho da tela do meu notebook funcionava legal, instalava a maioria dos programas que eu precisava, só o Steam, que precisava novamente de alguma lapidação, outras coisas também, mas enfim ... no fim acabou funcionando.

Recentemente comprei um jogo no Steam, promoção boa, sabe como que é, um tal de "Layers Of Fear". Desempenho péssimo ! o jogo nem é tão bonito assim, eu sei que minha placa de vídeo recente uma ATI HD7700 aguentava o tranco, imagino que seja o Driver nativo do xorg, baixo o driver proprietário da ATI, especificamente para o modelo da minha placa de vídeo e para a versão do Ubuntu que estava usando, pra variar uma instalação tosca compactada que tem que ser rodada via terminal, instalação terminada com sucesso, mando reiniciar e ... o sistema não sobe mais.

Todo trabalho de deixar o sistema do jeito que eu queria foi em vão ... simplesmente fiquei na mão com uma tela preta e quer saber, novamente ... Windows você venceu ! Tudo funciona bem novamente, vou no ninite.com listo os programas que mais uso, instala tudo sozinho, baixo o driver da placa de vídeo, next next finish, Steam funciona de primeira, "Layers of Fear" rodando liso, coloco o Avast só por garantia e aqui estou eu feliz da vida.

Desisti, a Canonical foi a empresa que mais chegou perto de criar um SO baseado em Linux que realmente seja funcional, mas chegar perto não é chegar lá. Ainda acredito no poder do linux para dispositivos móveis, roteadores, servidores em geral, mas para Desktop, se em todos esses anos ninguém conseguiu até agora fazer a coisa direito, assino embaixo que nunca conseguira.

quinta-feira, 29 de dezembro de 2016

Conectando o controle sem fio do XBox360 no PC ou Raspberry Pi

Obviamente se você veio até aqui, é porque não quer comprar o receptor original do controle sem fio XBox360, está procurando uma solução mais "alternativa", primeiramente pelo preço absurdo de um hardware simples, segundo pela dificuldade de achar, e terceiro que na maioria das vezes você não quer mais um controle que acompanha o receptor, quer apenas usar o controle que já tem.

Infelizmente a MS ao contrário da Sony, não desenvolveu os controles sem fio baseado no protocolo bluetooth, que inviabiliza tentar qualquer "gambiarra" igual é feito com os controles do PS3 e PS4, a única coisa que é possível fazer é usar a própria placa de RF do XBox360, mais especificamente a placa que fica na parte frontal, que tem o botão de liga desliga e os leds. Como as primeiras versões do XBox360 deram problema "a rodo" com o famoso 3RL, tem dessas plaquinhas aos montes por ai, com certeza se você for a alguma assistência técnica de video game, você encontrará facilmente ela, pois é justamente o módulo de RF do XBox360 FAT que iremos usar nesse projeto, eu particularmente encontrei essa placa no mercado livre por uma média de R$ 10,00 bem mais em conta do que gastar R$ 70,00 no receptor original da Microsoft.

Essa placa na verdade usa uma conexão USB para transmitir os dados do controle, a única diferença é que ela trabalha com 3.3V ao invés dos 5V de uma USB comum. Isso é facilmente corrigido usando um CI regulador de tensão 3.3V, ou um divisor de tensão usando resistores ou apenas 2 diodos comuns (1N4007) ligados em série. Porém o maior problema é que usando somente a USB, não é possível dar o comando de sincronismo entre a base e o controle para poder parear ambos. Esse comando de sincronismo é um código binário enviado em um outro pino na placa, e para enviar esse código sem o XBox360 é necessário um microcontrolador, nesse caso, o mais fácil seria usar um Arduíno.

Para resumir, temos 3 cenários:

1- Usar um XBox360 Fat funcional e puxar os 4 fios da USB da placa RF dele. É uma opção válida, você usa o próprio XBox360 para parear o controle, e como ele é funcional, você usa ele normalmente, quando quiser usar o modulo dele no seu PC, você teria que desligar ele da tomada, e conectar o cabo USB no computador. Como o controle já está pareado na placa, não é necessário mais nada para funcionar no PC

2- Usar uma placa de Arduíno temporariamente. Como é inviável usar uma placa de Arduíno exclusivamente somente para sincronizar o controle (por questão de tamanho e preço), é possível conectar uma placa de Arduíno somente para sincronizar o controle. Após parear o controle com a base, o Arduíno não é mais necessário, a não ser que você pareie esse controle em outro aparelho.

3- Utilizar um pequeno microcontrolador nesse caso o Attiny85 que é programado usando uma placa de Arduíno. Esta opção é deixar fixo um Attiny, que é um microcontrolador pequeno e barato para enviar o comando de sincronismo, a vantagem desta opção é ter sempre disponível a possibilidade de sincronizar qualquer controle, sem precisar de um XBox360.

Clique na imagem para ampliar

Basicamente vamos usar os 7 primeiros pinos do conector da placa RF. Os primeiros 4 primeiros pinos, olhando a placa de frente, e contando a partir do primeiro pino superior esquerdo, temos a conexão USB, com o diferencial de que a placa trabalha com 3.3V, como a USB trabalha com 5V vai ser necessário usar algo para baixar para 3.3V, nesse caso, foi usado 2 diodos de uso geral, ligados em série, a resistência interna somada dos diodos foi suficiente para baixar a tensão de 5 para 3.2V. Se você quer algo mais preciso, pode sem problema usar um CI regulador de tensão de 3.3V. Se você vai usar o modulo em conjunto com um XBox funcional, basta usar esses ligados na USB e pronto.

Os próximos 3 pinos, que seria a segunda fileira da esquerda pra direita, seria o pino do botão Power central, que será usado como entrada para dar o comando de sincronismo, o DATA e o CLOCK. Esses vão ser ligados ao Arduíno ou ao Attiny, para ser possível parear o controle sem ter um XBox360. Como deu pra ver, é bem simples, basta ligar 3 fios do modulo RF nas portas do Arduíno, como mostra a figura acima e programar o Arduíno com o seguinte código:

/* Arduino code to communicate with xbox 360 RF module.
 * Original work by (yaywoop) / additional ideas from Alexander Martinez - modified by dilandou (www.dilandou.com, www.diru.org/wordpress)
 * First sends LED initialisation code followed by LED startup animation code, then sleeps until a button press for sync command.
 * RF module must be powered with 3.3V, two diodes in series with USB 5v will do. Connect the USB wires to a host computer, and the data and serial wires to Arduino.
 * of course, make sure to have a common ground 
 */

#include

const int sync_pin = 2; //power button repurposed for sync button (pin 5 on the module)
const int data_pin = 3; //data line (pin 6 on the module)
const int clock_pin = 4; //clock line (pin 7 on module) 

int led_cmd[10] =  {0,0,1,0,0,0,0,1,0,0}; //Activates/initialises the LEDs, leaving the center LED lit.
int anim_cmd[10] = {0,0,1,0,0,0,0,1,0,1}; //Makes the startup animation on the ring of light.
int sync_cmd[10] = {0,0,0,0,0,0,0,1,0,0}; //Initiates the sync process.
volatile boolean sync_enable = 0;

void sendData(int cmd_do[]) {
  pinMode(data_pin, OUTPUT);
  digitalWrite(data_pin, LOW);    //start sending data.
  int prev = 1;
  for(int i = 0; i < 10; i++){

    while (prev == digitalRead(clock_pin)){} //detects change in clock
    prev = digitalRead(clock_pin);
      // should be after downward edge of clock, so send bit of data now
    digitalWrite(data_pin, cmd_do[i]);

    while (prev == digitalRead(clock_pin)){} //detects upward edge of clock
    prev = digitalRead(clock_pin);
  }
  digitalWrite(data_pin, HIGH);
  pinMode(data_pin, INPUT);
}

void initLEDs(){
  sendData(led_cmd);
  delay(50);
  sendData(anim_cmd);
  delay(50);
}

void wakeUp(){
  sync_enable = 1;
}

void sleepNow() {
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // set sleep mode
  sleep_enable(); //enable sleep bit
  attachInterrupt(0, wakeUp, LOW);
  sleep_mode();
  sleep_disable(); //disable sleep bit
  detachInterrupt(0); // disables interrupt 0 on pin 2
}

void setup() {
  Serial.begin(9600);
  pinMode(sync_pin, INPUT);
  digitalWrite(sync_pin,HIGH);
  pinMode(data_pin, INPUT);
  pinMode(clock_pin, INPUT);
  delay(2000);
  initLEDs();
}

void loop(){
  Serial.println("Sleeping.");
  sleepNow();
  delay(200);
  if(sync_enable==1) {
    Serial.println("Syncing.");
    sendData(sync_cmd);
    sync_enable = 0;
  }
}

Feito o upload do programa no Arduíno, agora é hora de ligar o módulo RF no computador, ligue primeiro o modulo RF e somente depois ligue o Arduíno, o LED central deve ficar aceso, se não ficar, algo deu errado com a comunicação do Arduíno, se você checou tudo e ainda assim o led não acende, no final do post eu tenho um macete que pode ajudar a fazer funcionar, lembrando que o Arduíno só é necessário para parear o controle, mesmo com todos os leds apagados, uma vez pareado o controle, ele funciona normal. 

Ao conectar na USB, ele irá reconhecer (se não reconhecer ou ficar conectando e desconectando intermitentemente, tem algo errado), mas ao abrir o gerenciador de dispositivos, o windows vai mostrar que falta driver. O Driver que vamos usar é do próprio receptor wireless para controle XBox360, sendo assim entre na página da MS e baixe o driver conforme a versão do seu Windows:


Depois de baixar e instalar o driver, ao entrar no gerenciador de dispositivos, você vai ver que mesmo assim o receptor não está instalado, ele provavelmente vai estar como "dispositivo desconhecido" isso é devido que esse driver não foi feito específico para essa placa. Sendo assim vamos ter que forçar a instalação do driver neste dispositivo, o driver que você deverá instalar forçado está em:

C:\Program Files\Microsoft Xbox 360 Accessories

Se você não sabe como instalar um driver forçado, acompanhe esse video, ele usa o "cenário 1", sem a necessidade de ter um Arduíno, mas funciona em todos os casos:


Após o driver instalado e funcional, agora sim é hora de sincronizar o controle (se ele ainda não foi pareado), se o led central estiver aceso, basta apertar o pequeno botão da placa que seria o botão "Power" do XBox360 que os leds vão começa a rodar, dai você já sabe, basta apertar o botão sync do controle também, e pronto ! Para testar o controle, mande executar (Windows + R): joy.cpl que se tudo estiver Ok, ele irá aparecer lá.

Agora se mesmo depois de ter checado tudo e mesmo assim o LED não quer ligar, existe um macete que pode te ajudar. Alguns módulos de RF necessitam de 2 resistores Pull UP nos pinos DATA e CLOCK, se você não sabe o que é isso, não tem problema, basta ligar 2 resistores de 10K um no pino DATA e outro no pino CLOCK (pinos 6 e 7 do modulo RF), ambos os resistores ligados no +5V da USB, se esse for o seu caso (foi o meu caso ...), vai funcionar na hora.


Essa foi a plaquinha que eu montei, no meu caso eu usei um Attiny 85 permanente colado na placa. Repare que eu usei um pedaço de cabo flat que eu cortei de um cabo de HDD sata, e como eu não tinha a mão um CI regulador de 3.3V, acabei usando 2 diodos em série mesmo. Caso você também queira usar um Attiny para fazer o sincronismo eu aconselho você usar outro código:

/* Arduino code to communicate with xbox 360 RF module.
 * Original work by (yaywoop) / additional ideas from Alexander Martinez - modified by dilandou (www.dilandou.com, www.diru.org/wordpress)
 * First sends LED initialisation code followed by LED startup animation code, then sleeps until a button press for sync command.
 * RF module must be powered with 3.3V, two diodes in series with USB 5v will do. Connect the USB wires to a host computer, and the data and serial wires to Arduino.
 * of course, make sure to have a common ground
 * 
 * Modified to the Attiny by dantavares
 */

#include
#include

const int sync_pin = 3;  //power button repurposed for sync button (pin 5 on the module) do not change this !
const int data_pin = 2;  //data line (pin 6 on the module)
const int clock_pin = 1; //clock line (pin 7 on module) 

int led_cmd[10] =  {0, 0, 1, 0, 0, 0, 0, 1, 0, 0}; //Activates/initialises the LEDs, leaving the center LED lit.
int anim_cmd[10] = {0, 0, 1, 0, 0, 0, 0, 1, 0, 1}; //Makes the startup animation on the ring of light.
int sync_cmd[10] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0}; //Initiates the sync process.
volatile boolean sync_enable = 0;

void sendData(int cmd_do[]) {
  pinMode(data_pin, OUTPUT);
  digitalWrite(data_pin, LOW);    //start sending data.
  int prev = 1;
  for (int i = 0; i < 10; i++) {

    while (prev == digitalRead(clock_pin)) {} //detects change in clock
    prev = digitalRead(clock_pin);
    // should be after downward edge of clock, so send bit of data now
    digitalWrite(data_pin, cmd_do[i]);

    while (prev == digitalRead(clock_pin)) {} //detects upward edge of clock
    prev = digitalRead(clock_pin);
  }
  digitalWrite(data_pin, HIGH);
  pinMode(data_pin, INPUT);
}

void initLEDs() {
  sendData(led_cmd);
  delay(50);
  sendData(anim_cmd);
  delay(50);
}

void sleep() {
    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT3);                   // Use PB3 as interrupt pin
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement

    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep

    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT3);                  // Turn off PB3 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on

    sei();                                  // Enable interrupts
}

ISR(PCINT0_vect) {
  // This is called when the interrupt occurs, but I don't need to do anything in it
  sync_enable = 1;
}

void setup() {
  pinMode(sync_pin, INPUT);
  digitalWrite(sync_pin, HIGH);
  pinMode(data_pin, INPUT);
  pinMode(clock_pin, INPUT);
  delay(2000);
  initLEDs();
}

void loop() {
  sleep();
  delay(200);
  if (sync_enable == 1) {
    sendData(sync_cmd);
    sync_enable = 0;
  }
}

Lembrando que esse código deve ser compilado usando o Arduíno e pode usar a própria placa do Arduíno UNO para programa-lo. Se você não sabe fazer isso, o google esta ai cheio de tutorial pra você aprender. No meu caso, eu setei ele como 16Mhz Internal PPL.

Caso você queira usa-lo no Raspberry Pi, para mim funcionou perfeitamente no RecalBox, a única coisa que tive que fazer é editar o arquivo de configuração e desativar o suporte ao controle PS3 e habilitar o suporte ao controle XBox360.

quarta-feira, 14 de dezembro de 2016

Instalando driver desconhecido no Windows mais facilmente

Já vou avisando que ao contrário de muito blog charlatão por ai, eu não vou dar aqui solução mágica para você encontrar aquele driver que não tem em lugar nenhum, porém, eu vou ensinar de uma forma mais correta de encontra-lo. É claro que se você já chegou nesse ponto, é porque já entrou no site do fabricante etc e nada deu certo.

A ideia aqui é descobrir a identificação de hardware do dispositivo para encontra-lo de forma mais precisa. Algumas pessoas abrem para olhar o CI e mal sabem que é muito mais fácil consultar isso. O que nos interessa na verdade são duas coisas o VID e o PID. O VID é a identificação do fabricante e o PID é a identificação do dispositivo. Para descobrir isso é bem simples, basta entrar no gerenciador de dispositivos (Execute devmgmt.msc) e localizar o dispositivo faltando o driver, vá em propriedades deste dispositivo, e na aba "Detalhes" mude em "Propriedades" para IDs de Hardware, você vai ver algo parecido com isso: USB\VID_0C45&PID_608F&REV_0101&MI_00

Para facilitar, veja o exemplo na figura abaixo:

Clique na imagem para ampliar

Neste exemplo, é uma webcam ligada na USB, repare que o VID é 0C45 e o PID é 608F ou simplesmente 0C45 608F. Agora basta procurar por isso, e existe um site russo com um banco muito bom de drivers, em que a consulta pode ser feita pelo VID e PID, ele é o:


Repare como fica fácil agora achar ele neste site:


Mesmo assim, o devid não é 100%, como você mesmo pode ver, eu não achei drivers para sistema de 64bits (e provavelmente não tenha mesmo) que no meu caso não funcionou. Se o bater o desespero, tente a sorte no google mesmo, mas dai a pesquisa se torna bem mais árdua, para facilitar, no google, separe o vid e pid por ":" ou seja, nesse caso 0C45:608F


Mesmo assim, não encontrei nada que funcione para mim (para 64Bits), como eu disse anteriormente, é a maneira mais fácil de encontrar, porém o drivers precisa existir primeiro.




quarta-feira, 9 de novembro de 2016

Donald Trump foi eleito, e agora ?


Finalmente o assunto 'eleição' acabou, e para quem achava que estava livre de escândalos e baixarias, está redondamente enganado.

Pegue tudo que há de idiota nos norte americanos, aquele ser machista, xenofóbico, racista, mulherengo, prepotente e extremamente nacionalista, misture tudo isso mais alguns bilhões de dólares e uma vontade imensa de comprar tudo que precisar para conseguir o que quer, e o resultado disso se chama: Donald Trump.

Mas como isso foi acontecer ? contrariando todas as pesquisas, toda lógica e fatos a respeito dele ? Muito simples: Ele é tudo que um norte americano quer ser, mesmo eles não admitindo isso. Tanto que a maioria das pessoas que votaram nele, tinham vergonha do seu próprio voto, mas mesmo assim, votaram. Isso é claro, considerando aquele tipico americano de classe média que não tem ensino superior, mal sabe fritar um ovo, sustentando sua família com algum sub emprego, enquanto soma as contas para conseguir pagar o aluguel e ainda sobrar dinheiro para comprar munição para as dezenas de armas de fogo que ele possui.

Eu não to aqui para criticar o estilo de vida norte americano, mas sim criticar a decisão de um povo que não enxerga além de seu próprio nariz. Eles acham que construir muros e acabar com tratados vai lhes tornar GRANDE novamente, mas estão redondamente enganados. Eles vão prejudicar o mundo todo, inclusive o Brasil, mas não tanto quanto eles mesmos, principalmente se o tiozão lá começar a querer brincar com armas nucleares, e sim, isso é um problema iminente.

Em menos de 24Hs da notícia de sua posse a presidência dos EUA, o mundo todo está perplexo, acuado e nervoso, tentando digerir algo difícil de entender ... porquê ?? justo ele ??? pois é ! não adianta chorar, ou esperamos que ele faça uma merda tão grande que resulte em impeachment (e lá isso é bem mais fácil de ocorrer), ou temos que nos preparar para criar novas alianças, novos acordos e principalmente procurar aquilo que o Trump mais teme: Criar uma globalização mais pacífica possível, e deixar os EUA se afundar sozinho. 

Peguem seus baldes de pipoca pessoal, o Show vai começar !

domingo, 23 de outubro de 2016

Instalando o TWRP e o Xposed em dispositivos MTK com Android 5


Recentemente adquiri um Blu Studio C HD rodando o Android 5.1, muito bom aparelho porem com um problema irritante: Reinicia sozinho aleatoriamente.

Com muita pesquisa a respeito, descobri que esse não é um problema do aparelho em si (hardware) mas sim um sério bug de vazamento de memória do Android 5 (lolipop) que faz com que aplicativos recém fechados não liberem a memória RAM, com o tempo a memória estoura e há um Kernel Panic, fazendo o dispositivo reiniciar.

Problema 1:

Teoricamente primeiro o dispositivo precisa ter acesso ROOT, mas isso é apenas a ponta do iceberg, pois a solução para isso seria utilizar uma correção via Xposed, que para quem não conhece, é uma biblioteca que permite fazer coisas mais a fundo que o ROOT em si, modificando o comportamento de bibliotecas do sistema, sem alterar os arquivos originais, tudo em nível de memória.

Problema 2: 

A partir do Android 5, há uma proteção que não permite a instalação do Xposed, mesmo tendo root, a instalação deste sdk só é possível via menu de recovery.

Problema 3: 

O menu de recovery (aquele que permite voltar a configuração original de fábrica, caso seu sistema de pau) original dos dispositivos não permite que instale pacotes não devidamente assinados pelo fabricante, no meu caso a BLU.

O Google além de liberar um sistema com um problema gravíssimo, ainda não mede esforços para bloquear qualquer tentativa de modificação, que permitira corrigir bugs.

Resolvendo os problemas:

Antes de começar, já vou avisando que os procedimentos descritos abaixo são de dificuldade moderada, exigindo um certo conhecimento e risco. Ou seja se:

  • Seu celular brickar
  • Seu celular morrer
  • Seu celular derreter
  • Seu celular for possuído por um demônio
  • A Skynet acordar e haver uma gerra nuclear
  • O Faustão fizer um firme pornô gay
  • A Sacha revelar que é hermafrodita
  • A Claudia leite se casar com a Ivete Sangalo

NÃO É PROBLEMA MEU !

Primeiro de tudo, temos que fazer o root do dispositivo, ou seja, se ele já for, pode pular esta parte. Uma forma fácil de fazer o root, que funcionou para mim é usar o Kingo Root:


Se não funcionar para você, o Google está ai para tentar outras trocentas mil formas de fazer root no Android 5.

Tendo o dispositivo rooteado, é hora de baixar o app chamado Flashify:


ou


Abra o Flashify e vá em Backup Current Revovery:


Ele vai pedir um destino para o backup da sua revovery, escolha o Cartão SD. Depois de feito o Backup, copie esse arquivo no seu computador, ele deve estar na pasta:

Android\com.cgollner.flashif\files\flashify-backup\recovery\

Agora você vai precisar do MTK Extractor:


Extraia a pasta compactada do MTK Extractor em algum lugar do seu computador, e renomeie ela como "MTK Extractor Stock" copie o arquivo de backup do seu recovery (que você fez através do Flashify) na nesta pasta, e renomeie este arquivo para boot.img.

Rode o MTK Extractor.exe como administrador, Clique no botão BOOT e em seguida UNPACK BOOT.IMG:

Clique na imagem para ampliar

Feche-o e volte na pasta do MTK Extractor, e você verá que ele extraiu os dados do arquivo recovery do backup que você fez. 

Descompacte novamente o arquivo do MTK Extractor, e desta vez renomeie sua pasta como "MTK Extractor Custom", você terá duas pastas do MTK Extractor. Agora vamos precisar do arquivo img do TWRP, eu aconselho que você consiga algum que seja do mesmo chipset do seu celular, no meu caso, o BLU STUDIO C HD é um MT6580, e eu usei este aqui:


Você consegue descobrir isso facilmente pesquisando as especificações técnicas do seu dispositivo, ou usando o Mtk Droid Tool. Se você não conseguiu descobrir ou não achou um correspondente ao seu celular, tente a sorte com este mesmo, no máximo que pode acontecer é não funcionar, que em geral não bricka o seu celular, apenas não entra ou trava no menu de recovery. 

Descompacte o arquivo img do TWRP na pasta "MTK Extractor Custom", e novamente renomeie este arquivo como boot.img, rode o MTK Extractor.exe como administrador, clique em BOOT e depois UNPACK BOOT.IMG da mesma forma como você fez antes, feche-o.

Agora é o pulo do gato ! Volte na pasta "MTK Extractor Stock" e copie APENAS o arquivo kernel desta pasta na pasta "MTK Extractor custom", você vai substituir este arquivo por um outro que tinha nesta pasta. Depois que você substituiu o arquivo, rode novamente o MTK Extractor.exe da pasta "MTK Extractor Custom" como administrador, vá em BOOT só que desta vez clique em REPACK BOOT.IMG, ele pode dar um erro, clique em "continuar" e feche-o.

Volte na pasta "MTK Extractor custom" e agora terá um arquivo chamado boot-new.img, esta é a imagem do seu menu recovery do TWRP (ou outro), copie este arquivo no cartão SD do seu celular.

Volte no seu celular, rode novamente o Flashify, vá em "Recovery Image", selecione "from file" e selecione o arquivo que você acabou de criar e copiar no cartão SD e mande flashar:

Depois de flashado, ele vai sugerir reiniciar o dispositivo, ao reiniciar, você já pode segurar as teclas especificas do seu aparelho para entrar no menu de recovery, e testar para ver se deu certo, se você não sabe que teclas são essas, procure saber e testar antes de fazer todo este procedimento, pois senão você não saberá se deu certo ou não.

Caso não funcione, não se desespere, isso normalmente não bricka o aparelho, se travou tire a bateria, religue o aparelho, volte no Flashify, vá em RESTORE/RECOVERY, e volte a recovery original do seu aparelho. Neste caso você pode tentar outros arquivos de custom recovery, a versão free do Flashify só permite fazer 3 flashs por dia, mas você pode burlar isso adiantando a data do seu celular.

Agora está na hora de resolver o problema 2

Estando tudo ok, baixe a ultima versão do Xposed na pagina oficial:


E baixe o correspondente da versão do seu Android, não esquecendo de baixar também o uninstaller, caso de pau. Copie os arquivos na raiz do seu cartão SD e entre no seu novo Custom Recovery, e mande atualizar com o arquivo zip do Xposed, reinicie o aparelho. Lembrando que o primeiro boot depois de fazer isso pode demorar, então só considere que deu merda depois de esperar mais de 20 minutos. Caso ele tenha ficado preso no menu de boot, reinicie o dispositivo (removendo a bateria por exemplo) e rode o uninstaller do Xposed, nesse caso provavelmente ele vai bootar normal, e você baixou algum  arquivo errado.

Com o Xposed instalado, finalmente:

Resolvendo o problema 1

O Xposed sozinho apenas não faz nada, você vai precisar instalar o apk gerenciador dele, baixe ele:


E instale, lembrando de ativar a permição de fontes desconhecidas. Abra o Xposed Instaler, e se tudo estiver ok ele vai mostrar o XPosed devidamente instalado:


Estando tudo ok, vá em "baixar" e procure por "Fix Lolipop Memory Leak", baixe, instale, e vá em módulos e habilite-o. Agora é só reiniciar.

Finalmente, até agora o meu Android não deu mais nenhum reinicio sozinho, nem travamentos, qualquer novidade, eu volto aqui e modifico esse post.

Lembrando que é extremamente aconselhável você guardar em local seguro o backup da sua custom recovery original, que qualquer coisa pode ser flashado novamente usando o flashify.

Até mais !

terça-feira, 27 de setembro de 2016

Vire o jogo, faça o banco dar dinheiro pra você


Taxas disso, taxas daquilo, quando você vê aquela camisa que você deixou de comprar, na verdade foi pro banco. Não é a toa que os bancos são as empresas que mais tem lucro neste país, disparado. O fato é que além deles pegarem seu dinheiro para empresar esse dinheiro a outras pessoas, a juros (o chamado Spread), eles ainda embutem taxas em tudo, inclusive na tal "taxa de manutenção da conta" que nada mais é do que te disponibilizar mais serviços que na maioria das vezes você nunca usa. E isso sai caro, normalmente fica na faixa de R$ 25,00 por mês que no ano são R$300,00 a menos na sua conta, que foi pro lixo.

A verdade que pouca gente sabe, é que conta bancária básica e sem cobrança de taxas é garantida por lei, e é claro que o banco jamais vai te oferecer isso ao abrir uma conta, e algumas vezes vão até te negar dizendo que isso não existe, existe ! Esse é um direito garantido pela resolução nº 3.518/2007, em vigor desde 30 de abril de 2008 e atualizada pela Resolução nº 3.919/2010, do Banco Central do Brasil. O artigo 2º da Resolução nº 3.919/2010 proíbe as instituições bancárias de cobrar tarifas pela prestação de serviços bancários essenciais a pessoas naturais, isto é, à pessoa física. Ou seja, por direito, a conta básica sem taxas deveria ser algo "comum" entre as pessoas, mas não é. Veja só o que uma conta gratuita é garantida por lei:
  • Um extrato anual;
  • Dois extratos mensais contendo a movimentação dos últimos trinta dias;
  • Duas transferências de saldo entre contas do mesmo banco;
  • Quatro saques;
  • Dez folhas de cheques;
  • Fornecimento de cartão com função débito;
  • Compensação de cheques;
  • Consultas ilimitadas pelo Internet Banking.
Veja que é bem possível ter uma conta dentro destes parâmetros. Pois extrato em folha é algo obsoleto e até perigoso, você pode consultar seu extrato pela internet sem problema algum gratuitamente e ilimitadamente. Cheque é algo também obsoleto e perigoso, mesmo assim você pode ter 10 folhas de cheque. Praticamente qualquer boteco de esquina aceita cartão de débito, você pode usar e abusar dele até pra comprar uma bala, e não, o lojista não pode te negar o uso do cartão de débito para valores baixos. 

Não há necessidade de usar dinheiro físico na maioria dos casos, mesmo assim você pode fazer um extrato com mais ou menos o que você usa de dinheiro físico por mês, e o outro você pode usar numa emergência, o mesmo vale para transferência bancária.

Mesmo que em um mês ou outro você "fuja" destas regras, o banco vai te cobrar uma taxa na ordem de R$2,00 ~ R$4,00, mesmo assim sai mais barato do que pagar uma tarifa mensal de ~R$ 25,00.

Zerando as "taxas" bancárias,  fuja de qualquer outro serviço, mesmo que o banco ligue insistentemente para você te oferecendo (alias, bloqueadores de chamada são aplicativos muito úteis  e comuns nos smarthphones #ficaadica). 

Agora o que você pode fazer para realmente o banco te dar dinheiro é aplicar aquele dinheiro que sobrou no final do mês em CDB. Não, nem pense em poupança, poupança é lixo ! Pois ela rende abaixo da inflação, é uma micharia, uma vergonha. Eu na verdade poderia falar para você aplicar em tesouro direto, mas para quem nunca ouviu falar nisso, pode ser complicado de fazer, mas se tem interesse, pesquise mais a respeito. Porém, o que está ali fácil, seguro e disponível em qualquer banco é o CDB (certificado de depósito bancário), que leigamente quer dizer, que você passa a emprestar dinheiro pro banco à juros, e é dai que o banco passa a dar dinheiro pra você.

O CDB rende um percentual do CDI, que em termos leigos, ainda rende muito mais que a poupança. E assim como a poupança, o dinheiro é seu, e você pode resgata-lo quando quiser, parcialmente ou integralmente. A única coisa que você precisa saber é que existem 2 tipos de CDB, o pré fixado e o pós fixado. O pós fixado rende bem mais próximo do CDI, mas se você precisar resgatar esse dinheiro antes do tempo determinado pelo contrato, (que pode ser de uns 4 anos) você pagará multa e perderá dinheiro, e normalmente só pode ser resgatado integralmente. Ou seja, só use o pós fixado se você tem certeza que não usará esse dinheiro para nada nos próximos anos. Mesmo que você use o pré fixado que normalmente rende ao dia e você pode resgatar integralmente ou parcialmente quando quiser, você estará muito mais no lucro que a poupança, pois assim como a poupança mesmo que o banco quebre, você tem garantia de receber esse dinheiro de volta em até R$25.000,00, sendo assim, somente há risco de você investir em CDB acima deste valor.

Fora isso, tome muito cuidado com cartão de crédito. Tenha apenas 1 cartão de crédito, e lembre que normalmente esse cartão tem taxa anual. Porém alguns bancos sob certas condições de uso, não cobram tarifa anual do cartão de crédito. Por exemplo, o Santander tem um cartão de crédito gratuito que você só precisa ter a fatura de no mínimo R$100,00 todo mês, considerando que todo mundo tem que fazer compras, se diverte no final de semana etc, ao invés de usar o precioso dinheiro físico, use o cartão de crédito e controle rigidamente a fatura, pois se a coisa sair do controle e você não pagar a fatura completa, os juros não são altos, são extratosféricos, sempre pague a fatura integralmente.

Resumindo, se você tem uns R$ 6.000,00 parado, e investir em um CDB pré fixado, sem taxas de manutenção de conta, e sem taxas do cartão de crédito, o banco vai te pagar em média R$ 15,00 por mês ! Ta bom pra você ?

Lembrando que atendente de telemarketing, gerente de banco etc, trabalha para o banco não pra você ! Nunca caia na lorota desses salafrários com promoçõezinhas, sorteiozinhos e servicinhos. A palavra de ordem é NÃO, lembre-se sempre disso. E se você é bancário e não gostou do salafrário eu tenho algo a dizer a você: É exatamente isso que você é ! Eu vejo mais e mais pessoas sendo enganadas na cara dura com funcionários que só pensam em atingir sua meta desesperadamente, e não pensam 2x em sair de greve deixando todo mundo na mão.

Tudo que eles fazem tem um propósito, como por exemplo em promoções onde eles dizem converter a tarifa da conta, em crédito de celular (para você não abrir uma conta gratuita), mas na verdade esse "crédito" é "bônus" e no fim das contas não serve pra porra nenhuma. Fique atento e não caia em lorota !