Preservando um pedaço da história da Revista do Linux

ATUALIZADO em 17/10/2022: correção, quem fazia a diagramação da revista inicialmente era a Mare Magnum, não a Pimenta Comunicação. Obrigado ao Rodrigo Stulzer pela informação!

Recentemente, enquanto ajudava meus pais a organizar uma mudança, encontrei um artefato curioso em meio a uma pilha de revistas: um envelope pardo, com o texto “Revista do Linux nº 1” escrito na frente. Achei que era uma das minhas número 1 lacradas, que guardo por valor sentimental.

Quando abri o envelope, tive uma surpresa: ele continha, sim, um exemplar da nº 1. Mas não uma cópia “de banca”. Em vez disso, trata-se de uma prova impressa, praticamente completa, da edição. Uma das muitas que eram feitas durante o processo de produção.

Prova impressa da Revista do Linux nº 1, junto com 3 provas do meu primeiro artigo, publicado na nº 2.

Prontamente digitalizei esse material, parte inegável da história da informática no Brasil. O resultado são 64 páginas escaneadas em tons de cinza a 300 DPI, num total de 320 MB. O arquivo PDF está disponível no Google Drive.

Eu não participei da RdL 01: quando entrei na Conectiva, em dezembro de 1999, ela já estava pronta (e recebi um exemplar, como todos os funcionários). Meu primeiro artigo só foi publicado na 02, que saiu em maio de 2000.

Entretanto, fui membro em tempo integral da equipe de redação da nº 5 (se não me engano) até a edição 45, o que me permite extrair alguns “insights” sobre o processo de produção da primeira edição, que compartilho aqui com vocês.

Mas antes, preciso explicar como era feita a diagramação da RdL, já que o material é fruto direto desse processo, digamos, pouco otimizado, devido às circunstâncias da época.

Continue lendo

Trocando a tela de um MD Play

Há alguns anos comprei um MD Play da Tectoy, um Mega Drive portátil com tela de 2,8” e entrada para cartões SD, que ao longo do tempo começou a desenvolver um defeito: linhas verticais brancas no lado direito da tela, como mostrado abaixo.

Defeito na tela do MD Play: linhas brancas verticais na tela, que foram se multiplicando com o tempo.

Depois de abrir o console e verificar as soldas do LCD, para me certificar de que o problema não era um mal-contato, ficou óbvio que eu teria de trocar a tela. Mas por qual? Uma busca na internet pela única identificação no LCD, os números JTD028851C0 e JTD028920C1, não deu resultados.

Continue lendo

N88: Será que o “smartwatch” de US$ 20 presta?

Tenho um tio não muito mais velho do que eu que também é fascinado por tecnologia. De fato, foi ele quem me apresentou os videogames, que me levaram a uma carreira em tecnologia. E vira e mexe, navegando pela internet, ele esbarra em algum produto que chama a atenção.

Diggro N88

Foi assim que conheci o N88. Ele estava à procura de um relógio capaz de medir batimentos cardíacos e pressão arterial e que fosse, acima de tudo, barato. Numa primeira impressão achei que era mais um daqueles produtos que são “bons demais pra ser verdade”, ainda mais considerando o preço de cerca de US$ 20, mas apesar dos meus avisos meu tio não desistiu da compra.

E confesso que, quando o relógio chegou, fiquei bem surpreso. Não é que o treco funciona bem, dentro do que se propõe a fazer? Claro, não é um Apple Watch, mas é um produto bastante honesto pelo preço. Experimentei o N88 por algumas horas, e conto aqui minhas impressões iniciais sobre o produto.

Continue lendo

Como montar seu Mega Drive Mini

Quando a Sega anunciou que pretendia aproveitar a onda retrô e lançar um Mega Drive Mini em parceria com a AtGames fiquei bastante preocupado, já que a empresa não é conhecida pela qualidade ou precisão da emulação em seus produtos. Felizmente a Sega “viu a luz”, chutou a atGames e deixou o projeto a cargo da M2, uma empresa japonesa especializada na modernização e adaptação de jogos antigos para novos sistemas.

E pelo que temos visto na internet a M2 está caprichando: música de Yuzo Koshiro nos menus, uma bela seleção de jogos, uma nova versão de Tetris (um dos jogos mais raros no Mega Drive) e até um port inédito de Darius, shmup da Taito que fez muito sucesso nos arcades. Tudo indica que o Mega Drive Mini vai ser um pacote imperdível para os fãs do console.

Caixa do Mega Drive Mini: espero que seja provisória, porque é BEM feinha…

Mas você não precisa esperar o console da Sega para se divertir novamente com os jogos do Mega Drive. Com um Raspberry Pi, alguns acessórios e software gratuito você pode montar o seu próprio Mega Drive Mini, tão bonito e funcional quanto o original. Basta seguir este meu passo-a-passo.

Continue lendo

Como fazer root no Quantum SKY

Tenho um Quantum Sky desde antes do lançamento (afinal, trabalhei na Quantum) e há quase 2 anos ele é meu aparelho do dia-a-dia. Gosto muito dele, mas não gosto do fato dele ter “parado no tempo” no Android 7.0, sem perspectiva de atualização.

Nesses casos, muita gente decide tomar o controle da situação e fazer root no aparelho, para modificar o sistema a seu gosto. O detalhe é que, procurando pela internet, não vi em nenhum lugar instruções para fazer root no SKY.

Continue lendo

(mais de) Um mês com o Chrome OS

 

Tive meu primeiro contato com o Chrome OS, o sistema operacional da Google, em 2011 quando escrevi um artigo sobre os Chromebooks para a PC World. Aliás, creio que fui o primeiro a fazer um “hands-on” do sistema no Brasil. Na época tanto o hardware quanto o software eram protótipos (gentilmente cedidos por Felix Ximenes, na época Diretor de Comunicação da Google no Brasil), mas já mostravam potencial.

Desde então acompanhei a evolução do sistema a uma certa distância, porque aqui no Brasil não temos a mesma oferta (nem os mesmos preços) de hardware compatível que há no exterior. Mas há cerca de um ano comecei a trabalhar na Positivo Tecnologia Educacional, que tem um Chromebook (o CH1190) como um de seus produtos. Era minha chance de me familiarizar mais com a plataforma.

E mesmo com hardware bastante modesto (um processador ARM e 2 GB de RAM) o Chromebook e o Chrome OS impressionaram. Em vários momentos o portátil se mostrou mais rápido que meu PC Desktop, e ele logo se tornou meu “companheiro”, a máquina favorita para levar em reuniões, apresentações, viagens e outra qualquer situação onde eu precisasse de acesso rápido à informação e longa autonomia de bateria.

A experiência me marcou: se um Chromebook de entrada já oferece uma experiência de uso tão boa, do que o sistema seria capaz em hardware mais poderoso? Será que o Chrome OS já está maduro o suficiente para substituir o Windows, Mac OS ou Linux no dia-a-dia?

Para responder a esta pergunta, decidi passar um mês usando o Chome OS como meu sistema operacional principal. Mas em vez de comprar um Chromebook, apelei para uma solução mais econômica: fiz o meu, reaproveitando um notebook que já tinha em casa.

Continue lendo

Linux Mint 19 travando ao voltar da hibernação? Atualize o kernel!

Instalei há cerca de um mês o Linux Mint 19 “Tara” em meu notebook, e desde então venho percebido um comportamento estranho: algumas vezes a máquina congela ao voltar da hibernação (quanto mais tempo hibernando, maiores as chances), em outras ela volta da hibernação mas vejo a mensagem “Read-error on swap-device” no console. Como o “swap device” é uma partição no HD, a princípio suspeitei de falha no disk, mas uma checagem do status via S.M.A.R.T. mostrou que tudo estava OK.

Pesquisando um pouco no Google, descobri que os travamentos e mensagens são causados por um bug na versão 4.15 do kernel Linux, que foi corrigido na versão 4.17. Ou seja, a solução é atualizar o kernel. A versão 4.17 ainda não está nos repositórios oficiais do Mint, então devemos adicionar um novo repositório e instalar a ferramenta ukuu (sério, é esse o nome) para fazer o serviço. Seguem os passos, baseados em um artigo que encontrei no site mintguide.org.

Em um terminal, digite os seguintes comandos:

sudo apt-add-repository -y ppa:teejee2008/ppa 
sudo apt-get update
sudo apt-get install ukuu

Agora atualize a lista de kernels disponíveis, com

ukuu --check

Você pode ver quais versões do kernel estão instaladas em seu sistema com ukuu –list-installed e remover quaisquer versões mais antigas que o kernel atualmente em uso com ukuu –purge-old-kernels. Isso é especialmente útil em sistemas que estão em uso há um bom tempo e vem sendo constantemente atualizados. Em minha máquina, por exemplo, encontrei seis versões que não uso mais.

Para instalar o kernel estável mais recente, use

ukuu --install-latest

Com isso o ukuu vai baixar e instalar o kernel mais recente (junto com os headers) e atualizar o grub. Agora é só reiniciar o micro. O kernel antigo fica disponível como uma opção no menu do grub, caso você queira voltar a ele.

The misterious SEGA Mega Drive/Genesis clone

About 4 years ago I found an unusual Sega Mega Drive/Sega Genesis clone. It all started when I bought at an online auction in Brazil what was described as a “Japanese Sega Mega Drive 2”. This is the best looking Sega Mega Drive/Genesis model IMHO, and the idea was to use the case for a Raspberry Pi project. When it arrived, it looked like this:

The "Japanese Sega Mega Drive 2"

At first glance, it was an ordinary Mega Drive…

Sadly, it was dead on arrival. But since it was cheap and I wanted just the case, I didn’t care. The motherboard was tossed on the parts bin and I went on.

Fast forward some two and a half years. I was looking for a weekend project to let off some steam after a rough week and found the board. A quick inspection revealed the defect: a bad solder joint on one of the voltage regulators. After applying some fresh solder to the joint, the board started working again.

But I soon found out that it was not “Japanese”: a JP Bare Knuckle 2 cartridge was rejected with a TMSS warning screen. “Weird, a Japanese console should not reject a Japanese cart”. Red Flag One. “Let’s take a closer look, and see if I can do a region switch”, I thought.

The motherboard is a really good-looking one. Good quality solder joints, clean layout, discrete components for the M68K/Z80 and RAM from reputable brands (Motorola, Hitachi, Sony and NEC), a Sony CXA video encoder, an expansion connector, etc. Odd thing was: no SEGA copyrights anywhere, nor any indication of the revision/model (VA0, VA1, etc…). Red Flag Two.

Board overview

Overview of the board. Ignore the colored wires, back panel and big caps on the upper left side, there are mods I made.

OK, let’s check the PCB Revisions page on Sega Retro… and nothing matches. Then, something caught my eye: the ASIC with the VDP and audio processors was marked as
23C676 – JCDG. Definitely not a SEGA part, as those start with the 315- prefix and have the SEGA name on them. Red Flag Three! Ladies and Gentleman… we have a clone!

There is a sticker dating the board to June 26, 1995, and next to it K-1117 is inscribed on the ground plane. The question is: who would spend the energy and money to create such a high-quality clone, so late on the system’s life? Clones are usually “barely functional” and made in the cheapest way possible to maximize profits. None of that is true here.

Board IDs

Seems that the board was manufactured in 26 June, 1995. K-1117 may be a model number.

Without a box or more info, we may never know the answer. But at least we can try to document what we know, so others with this board can follow our lead. All this information was gathered by the observation of two boards, one owned by me and the other by my friend Carlos Rodrigo. Huge thanks to Carlos for some of the pictures and the jumper mappings.

Hardware description

This is a two-layer, fiberglass board. Clean layout, with good quality solder joints, very different from cheap NES clones. Many components are discrete:

Board layers

The board is made of fiberglass and has two layers. Photo by Carlos Rodrigo

Also dual ST Micro L7805CV voltage regulators, Dual Daewoo DBL324 quad op-amps, MCO 1415B oscillator rated at 53.693175 MHz, assorted discrete components. All electrolytic caps are from Wendell, a Taiwanese company. They are listed as “Bad Caps”, but none of them show signs of leakage.

23C676 Specifics

The 23C676 ASIC seems to be a clone of one of the “315-” ASICS by SEGA, which one is not clear. Since the Z80 is discrete, it could be the 315-5847, 315-5660, 315-5700 or 315-5708. Under the “model name” the code JCDG (on my board) or JDDD (on Carlos’s one) can be seen, maybe a mask revision? Carlos was kind enough to dessolder the chip from his board, and under it he found the code 4A091-A056.

23C676 ASIC, Front and Back

Besides JDDD, the chip was also found with the code JCDG. Maybe a mask revision? Photo by Carlos Rodrigo.

Jumper Settings

There are a number of jumpers on the board. Carlos mapped the effects of each one as follows:

Jumper Settings

There are 5 jumpers on the board. J3 is a region/language switch.

Compatibility tests

Carlos reports that the board if fully compatible with the Power Base converter, Sega CD, Virtua Racing and the SEGA 32X. It also worked fine with Everdrive cartridges. For all purposes, this is a fully featured Sega Mega Drive. Nothing seems to be missing.

I removed the Model 2 A/V Out port on mine, and replaced it with a set of more standard connectors: a DE-15 for RGB (connected to a GBS-8200 modded with the GBS-Control firmware) and RCA connectors for composite video and stereo audio.

I had issues with RGB video on a “stock” GBS-8200: the board was not able to correctly position the image on the screen (requiring a manual adjustment) and the last 64 or so lines of the image wobbled constantly. With GBS-Control the positioning issues are gone and the image is rock solid. I do not know if this is the result of the original firmware not liking the Mega Drive output, or if the signal is slightly “off-spec” and the new firmware can better deal with it.

Do you have more info?

If you have any more information about this Sega Mega Drive / Genesis clone, please leave it on the comments below. I am specially interested in box/manual scans that could help us determine where it came from.

GBS-8200: Configurando uma WeMos D1 para trabalhar com o firmware GBS-Control

Faz um tempinho que estou brincando com um custom firmware para a upscaler GBS-8200, que uso para ligar meus consoles e computadores clássicos à minha TV LCD. Chamado GBS-Control, esse firmware corrige algumas deficiências do original, melhora o desempenho geral da placa e adiciona alguns novos recursos interessantes. Há toda uma discussão sobre o desenvolvimento do GBS-Control no fórum Shmups.

Para usar o GBS-Control é necessário fazer algumas pequenas modificações na GBS-8200, para acoplar a ela uma Arduino ou compatível. É a Arduino que irá rodar o firmware, assumindo controle do conversor de vídeo da GBS-8200. Fiz essa minha modificação em minha placa há algum tempo atrás e documentei o processo em dois vídeos no YouTube (parte 1 e parte 2).

Mas a Arduino é apenas a ponta do Iceberg. Se no lugar dela você usar uma placa mais sofisticada, porém ainda compatível, como a WeMos D1 sua GBS-8200 ganha “superpoderes” como gerador de scanlines, controle remoto via Wi-Fi e várias opções para ajuste fino da posição e geometria da imagem. E o melhor é que a WeMos D1 é barata: comprei a minha por R$ 30 no Mercado Livre. E a instalação dela na GBS-8200 é fácil: basta tirar a Arduino e colocar a WeMos D1 no lugar.

Placa WeMos D1

Uma WeMos D1

Mas antes você precisa programar a WeMos D1 com o GBS-Control. E como sou um novato completo nesse mundo de Arduino e afins, patinei um pouquinho até encontrar o caminho das pedras. Por isso decidi compartilhar um passo-a-passo aqui neste artigo, acompanhando o vídeo que fiz sobre a modificação e postei lá no YouTube.

Estas instruções parecem complexas, mas você não vai levar mais do que 10 minutos para fazer tudo. E o resultado final vale a pena, acredite em mim. Olhe esse detalhe de Streets of Rage 2 rodando numa GBS-8200 com a WeMos D1.

Streets of Rage 2 no MegaDrive via GBS-Control

Detalhe de Streets of Rage 2 rodando em uma TV LCD de 32″ a 1280 x 960 pixels através de uma GBS-8200 modificada com o GBS-Control e WeMos D1

Passo 1: Adicionando o suporte à WeMos D1 na Arduino IDE

Antes de mais nada, assumo que você já tenha o ambiente de desenvolvimento do Arduino (Arduino IDE) instalado e funcionando em sua máquina. Estas intruções foram testadas com a versão 1.8.5. Se você usa Linux, uma dica: baixe a IDE do site oficial, e não de um repositório de sua distribuição. Em casa uso o Linux Mint, e a versão que veio via APT era pré-histórica: 1.0.5.

A Arduino IDE não sabe o que é uma WeMos D1, então precisamos baixar um pacote para adicionar suporte a esta placa. Abra a interface e clique em File / Preferences. Na janela que surge, na aba Settings, cole a seguinte URL no campo Additional Board Manager URLs:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clique em OK.

Adicionando URLs ao Boards Manager

Adicione uma URL extra para que o Board Manager da Arduino IDE possa baixar o pacote de suporte à WeMos D1

Agora clique em Tools / Board / Boards Manager. Na janela que surge, selecione a opção esp8266 by ESP8266 Community e clique no botão Install. Agora você deve ver a opção WeMos D1 R2 & mini em Tools / Board.

Pacote de suporte à ESP8266

Este é o pacote para adicionar o suporte a WeMos D1 (e outras placas baseadas no ESP8266) à Arduino IDE.

Passo 2: habilitando o acesso à WeMos D1

Estes passos se aplicam apenas a quem usa Linux, como eu. Plugue sua WeMos D1 ao PC, abra a Arduino IDE, clique em Tools e observe a opção Ports. Se ela estiver desabilitada (acinzentada), você vai precisar fazer alguns passos extras antes de usar a WeMos D1, já que ela não foi reconhecida pelo sistema. Se a opção Ports estiver habilitada, pule para o passo 3.

Quem me deu o caminho das pedras foi o Steve Kemp. Todo dispostivo USB tem uma identidade composta pelo ID do fabricante (Vendor ID) e do produto (Product ID), e precisamos descobrir os IDs da WeMos. Para isso, antes de plugar a placa ao seu computador, digite o comando lsusb. Você vai ver algo parecido com isso:

Bus 002 Device 005: ID 1a2c:2d23 China Resource Semico Co., Ltd
Bus 002 Device 006: ID 04ca:3005 Lite-On Technology Corp.
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0ac8:c342 Z-Star Microelectronics Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Não se preocupe se os IDs e nomes que aparecerem em sua máquina forem diferentes, afinal a lista acima mostra o que está plugado à minha máquina. O que importa é o passo seguinte: plugue a WeMos ao PC e rode novamente o comando lsusb. Compare com o resultado anterior, e você verá uma linha extra com algo como:

Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Esse é o conversor USB↔Serial integrado à WeMos. Anote o Vendor ID (no meu caso 1a86) e Product ID (7523) listados em sua máquina. Atenção: não copie simplesmente os IDs que estou mencionando aqui, pois eles podem ser diferentes em sua placa.

Agora vamos criar uma “regra” do udev (o gerenciador de dispositivos no Linux) que vai dizer ao sistema o que fazer quando a placa for plugada. Como root, digite:

cd /etc/udev/rules.d
pico 99-wemos.rules

Isso vai abrir o editor de texto Pico. Cole o conteúdo abaixo:

SUBSYSTEM=="tty", GROUP="plugdev", MODE="0660"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="wemos"

Lembre-se de substituir os valores em idVendor e idProduct pelo Vendor ID e Product ID mostrados em sua máquina. Tecle Ctrl-X para sair do editor, e responda Y quando ele perguntar se você quer salvar o arquivo.

Recarregue as regras do udev com o comando abaixo:

# /etc/init.d/udev reload

Desplugue sua WeMos D1 do PC, plugue novamente e ela deve ser reconhecida na Arduino IDE.

Passo 3: instalando a biblioteca WebSockets

Estamos quase no final. Para compilar o GBS-Control você precisa da biblioteca WebSockets instalada na Arduino IDE. Para isso, clique em Sketch / Include Library / Manage Libraries. Na janela que surgir, clique no campo Filter your search… e digite WebSockets. O pacote que queremos é o WebSockets by Marcus Sattler, em minha máquina ele era o último da lista. Clique sobre ele e no botão Install.

Instalando a biblioteca WebSockets

Adicione a biblioteca WebSockets à Arduino IDE antes de compilar o gbs-control

Passo 4: compilando o GBS-Control

Agora sim podemos compilar o GBS-Control. Acesse a página do projeto no GitHub, clique no botão Clone or Download e selecione a opção Download ZIP. Descompacte o arquivo gbs-control-master.zip e você deve ter uma pasta chamada gbs-control-master contendo o código-fonte do GBS-Control.

Renomeie a pasta gbs-control-master para gbs-control. Este passo é importante: não sei porque motivo, mas a Arduino IDE insiste que todo sketch (programa) esteja contido em uma pasta com o mesmo nome. Como o sketch se chama gbs-control.ino, ele tem que estar dentro de uma pasta chamada gbs-control.

Abra o arquivo gbs-control.ino na Arduino IDE e clique em Sketch / Verify/Compile. Depois de alguns minutos, a mensagem Done compiling. deve aparecer acima da janela de status no rodapé da tela. Agora é só clicar em Sketch / Upload e esperar a transferência do programa para a placa.

Compilando o GBS-Control

Resultado da compilação do GBS-Control

Ufa! Sua WeMos D1 está prontinha e programada com o GBS-Control. Agora é só seguir os passos do meu vídeo no YouTube para conectá-la à sua GBS-8200 e se divertir. Até mais!