Desenvolvimento embarcado no Debian Linux com LaunchPad Tiva C Series e MSP430 | Embedded development on Debian Linux with LaunchPad Tiva C Series and MSP430

English bellow.

Aproveitando a oportunidade com o início das aulas do curso Embedded Systems – Shape the World na plataforma edX.org, ministrado pelos professores Jonathan Valvano e Ramesh Yerraballi da University of Texas at Austin, publiquei no embarcados.com.br um tutorial que tem por objetivo oferecer aos interessados alternativas para configuração de um ambiente desenvolvimento para as plataformas LaunchPad Tiva C TM4C123G e MSP430, ambas da Texas Instruments.


Hitching a ride at the start of classes of Embedded Systems – Shape the World course at edX.org, taught by professors Jonathan Valvano and Ramesh Yerraballi of University of Texas at Austin, the main objective of this tutorial is to offer an alternative setup for a development environment for LaunchPad Tiva C TM4C123G e MSP430, both from Texas Instruments.

These kits are a great low coast alternative for study and project development, the TM4C123G is based on ARM Cortex M4F microcontroller and MSP-EXP430G2, on the low power comsumption microcontroller MSP430.

At the course, Embedded Systems – Shape the World, users can use both the TM4C123G as the LM4F120 kit and the initial goal of this tutorial was to allow the students to uses the Linux along the classes, however, for that the students receive their grades, it’s necessary to integrate the development tool Keil uVision, with a DLL developed by professor Valvano, called TExaS. This library integrates the lab exercises with the edX platform. More informations here.

Despite that, as some users have as development platform the Linux system, the search for alternative tools as hardware compatibility is constant. Some manufactures offers partial support to your platforms and few of then offers full support, at Texas website is possible to see that the MSP430 for example, doesn’t have full Linux support through the Code Composer Studio IDE.

So, basically the Linux users have two choices: become sad for not use your preferred operating system or come out and fight. Happily the community of users and developers is here to help us, and sometimes is really surprising all the support that already exists developed by the open source community.

We need basically of a text editor, compiler, debugger and a tool to send the code to the board, this set of tools is also called toolchain.

The text editor is definitively the easier part, can be simpler as Vi or a integrated development environment (IDE) that, as the name, integrates many other tools and even simmulation tools. Keil uVision and Code Composer Studio are two examples of these tools.

Using Debian Linux 8 (codename Jessie), and most likely any other Debian based distributions as Ubuntu and Linux Mint, we can configure a basic development environment for the platforms LaunchPad Tiva C TM4C123G and MSP430. All the installation is based on softwares available on Debian Linux repository and is needed root or sudo permissions.

For the LaunchPad TM4C123G, we’ll install the following packages (and its respective dependencies):

$ sudo apt-get install gcc-arm-none-eabi gdb-arm-none-eabi lm4flash lmicdiusb unzip make

We need to adjust some permissions for the current user and after this, login the system again:

$ sudo adduser $USER dialout

After the packages install it’s possible to plug the TM4C123G on the USB and see the system recognition:

$ sudo dmesg

The output will be something like this:

[ 5104.297091] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3          
[ 5104.297094] usb 2-2: Product: In-Circuit Debug Interface                     
[ 5104.297096] usb 2-2: Manufacturer: Texas Instruments                         
[ 5104.297098] usb 2-2: SerialNumber: 0E2195C8                                  
[ 5104.297789] cdc_acm 2-2:1.0: This device cannot do calls on its own. It is not a modem.
[ 5104.297817] cdc_acm 2-2:1.0: ttyACM0: USB ACM device

It’s possible to see that the system recognizes the LaunchPad board, and that is available at /dev/ttyACM0. Otherwise, we can also check:

$ lsusb | grep -i luminary
Bus 002 Device 012: ID 1cbe:00fd Luminary Micro Inc. In-Circuit Debug Interface
      
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Jan 31 19:03 /dev/ttyACM0

We can notice that access permission to the device /dev/ttyACM0 is for user root and group dialout, thats the reason for we included the current user on this group.

However, it’s not possible to directly access the device as normal users before write a specific rule to the udev system, or libusb will return us a error:

$ echo 'ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", GROUP="dialout", MODE="0660"' | sudo tee /etc/udev/rules.d/99-stellaris-launchpad.rules

$ sudo chmod 0644 /etc/udev/rules.d/99-stellaris-launchpad.rules

It’s interesting to reboot the system after these changes to reload the udev rules.

Now we can test the device. The test consists in download the Texas Instruments library here, the download is free but you need to register before.

We can now extract the downloaded exe file (it’s a zip file indeed), access the created directory and simply run:

$ make

After this we’ll access the path examples/boards/ek-tm4c123gxl/blinky/sourcerygxx, where the file blinky.bin is, a already compiled program (we can also explore the source code on the same folder). So we can now send the program to the board using:

$ lm4flash blinky.bin

That returns something like:

Found ICDI device with serial: 0E2195C8
ICDI version: 9270

After this, the board will restart and execute the program that will blink the LED. If you got the following error:

Unable to open USB device: LIBUSB_ERROR_ACCESS
Unable to find any ICDI devices

It’s the udev problem mentioned above and you can confirm running as root:

$ sudo lm4flash blinky.bin

If works as root, please check the 99-stellaris-launchpad.rules content and restart the system. Now we have the TM4C123G working, let’s configure the support for the MSP430, starting again for the packages installation:

$ sudo apt-get install gcc-msp430 gdb-msp430 mspdebug

Again we need to add the current user to the groups, loging again on the system:

$ sudo adduser $USER plugdev

Now it’s possible to plug the board on the USB and check the system:

$ sudo dmesg

We must see something like:

[ 4789.736733] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4789.736736] usb 2-2: Product: Texas Instruments MSP-FET430UIF                
[ 4789.736737] usb 2-2: Manufacturer: Texas Instruments                         
[ 4789.736739] usb 2-2: SerialNumber: B2FF467AF9CB5035                          
[ 4789.736890] usb 2-2: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 4789.742783] cdc_acm 2-2:1.0: This device cannot do calls on its own. It is not a modem.
[ 4789.742789] cdc_acm 2-2:1.0: No union descriptor, testing for castrated device
[ 4789.742807] cdc_acm 2-2:1.0: ttyACM0: USB ACM device

Again the system recognizes the LaunchPad, making him available at /dev/ttyACM0. We can also check:

$ lsusb | grep -i z430
Bus 002 Device 010: ID 0451:f432 Texas Instruments, Inc. eZ430 Development Tool
                                                                                     
$ ls -l /dev/ttyACM0
crw-rw---- 1 root plugdev 166, 0 Jan 31 18:58 /dev/ttyACM0

At this time the access permissions on /dev/ttyACM0 are to the user root and group plugdev. We’ll not have problems if our user are already at this group.

Let’s test the board using the mspdebug tool, if everything is alright must work as normal user:

$ mspdebug --usb-list

Returning something like:

Devices on bus 002:
    002:008 0451:f432 eZ430-RF2500

Now that we have all the environment ok, let’s test compiling a simple code and running at MSP430 board. So we can type at our favorite text editor:

/* MSP430 blink example */
#include

/** Delay function. **/
delay(unsigned int d) {
  int i;
  for (i = 0; i<d; i++) {
    nop();
  }
}

int main(void) {
  WDTCTL = WDTPW | WDTHOLD;
  P1DIR = 0xFF;
  P1OUT = 0x01;

  for (;;) {
    P1OUT = ~P1OUT;
    //delay(0x4fff); /* We can try to change this delay value */
    delay(0x1fff);
  }
}

We will same the source and compile with:

$ msp430-gcc -Os -mmcu=msp430g2231 -o blink.elf blink.c

And now upload to the board with the mspdebug, using prog blink.elf and run:

$ msgdebug rf2500

Type "help" for more information.
Use the "opt" command ("help opt") to set options.                              
Press Ctrl+D to quit.

(mspdebug)

prog blink.elf
run

And now we have our program running at MSP430.

The main goal of this tutorial was to provide a minimal development environment to the LaunchPad Tiva C TM4C123G and MSP430 platforms, at Debian Linux operating system.

There are other tools available, but not even with full support and it’s interesting to count with this support via the system software repository.

Starting with this minimal setup, it’s possible to use an IDE like Eclipse, mapping the compiler, linker and debugger into this IDE.

A partir de uma configuração mínima como a apresentada, é possível utilizar por exemplo um ambiente de desenvolvimento integrado (IDE) como o Eclipse, mapeando o compilador, linker, depurador e ferramenta de gravação dentro do IDE, centralizando seu ambiente de desenvolvimento.

All trademarks and products mentioned are the property of their respective owners.

References:

http://www.ti.com/tool/ek-tm4c123gxl
http://www.ti.com/tool/ccstudio-tm4x
http://www.ti.com/tool/msp-exp430g2
http://www.ti.com/tool/ccstudio-msp
http://www.ti.com/tool/msp430-gcc-opensource
http://energia.nu/guide/guide_linux/
http://energia.nu/pin-maps/guide_tm4c123launchpad/
http://energia.nu/pin-maps/guide_msp430g2launchpad/

Eletrônica, Internet das Coisas, sistemas embarcados e tudo mais | Electronics, Internet of Things, embedded systems and everything

English bellow.

O site embarcados.com.br é uma referência de muita qualidade sobre eletrônica, Internet das Coisas e sistemas embarcados na língua portuguesa. Desde que o conheci, há pouco mais de 1 ano, fiquei surpreso pela quantidade de autores escrevendo coisas boas e compartilhando seus conhecimentos com objetivo de realmente criar uma comunidade profissional sobre o assunto. Esse tipo de referência é bem comum de se encontrar em outros sites fora do Brasil.

Entendi então que o motivo da qualidade do trabalho produzido pela equipe do embarcados.com.br é nada menos do que empenho e comprometimento, e isso se traduz nos artigos que lemos publicados no site.

Recentemente resolvi me atrever a tentar colaborar com alguma troca de informação que eu julgue relevante, digo isso porque definitivamente me vejo aprendendo a todo momento, mesmo quando supostamente ensinando algo. Aliás, não gosto muito da palavra ensinar, me soa um pouco prepotente.

Produzi um pequeno tutorial sobre a utilização do sistema operacional Linux no desenvolvimento das plataformas microcontroladas LauchPad da Texas Instruments, e tive a satisfação de poder publicar no embarcados.com.br, é um grande incentivo estar perto de toda essa gente boa, pesquisando, trabalhando e desenvolvendo.

O tutorial será publicado nos próximos dias, e deixarei aqui o link para ele no embarcados.com.br no intuito de compartilhar com as pessoas todas os ótimos artigos que eles publicam. Minhas leituras lá raramente duram menos de 1 hora.

Referências:

42
www.embarcados.com.br
www.facebook.com/osembarcados
www.linkedin.com/company/embarcados
twitter.com/embarcados
plus.google.com/+EmbarcadosBrasil/posts


For those who speaks Portuguese, the website embarcados.com.br it’s a great reference in electronics, Internet of Things and embedded systems, written and maintained by a community of professionals producing great articles.

I recently submitted a little tutorial about using Linux for microcontrollers development, using the LaunchPad platform of Texas Instruments. This tutorial will be published at embarcados.com.br in the next days only in Portuguese and here I’ll keep the English version.

References:

42
www.embarcados.com.br
www.facebook.com/osembarcados
www.linkedin.com/company/embarcados
twitter.com/embarcados
plus.google.com/+EmbarcadosBrasil/posts

Sobre segurança e privacidade na Internet | About security and privacy on the Internet

English bellow.

Trabalhando com Internet e tecnologia há mais de 15 anos é inegável todas as facilidades das quais podemos usufruir: conectividade, interatividade, acesso à informação sem limites e por aí vai. Entretanto, um aspecto que sempre me incomodou diz respeito a segurança e a privacidade na Internet.

É quase assustador como as pessoas em geral não estão preocupadas com sua segurança e privacidade na Internet. Talvez isso seja uma consequência natural da popularização e alto grau de inserção que a Internet ganhou em nossas vidas, mas apesar de nunca ter me privado do uso da tecnologia, sempre questionei e me preocupo com alguns aspectos como a privacidade e a segurança na Internet.

Essa preocupação tem vários motivos e não precisa ser um especialista em segurança da informação para saber que estamos sujeitos a diversos inconvenientes desde o uso de nossos dados para fraudes virtuais (ou reais), envio de propaganda não solicitada (o famoso spam) e até perseguições ou outras formas de violências.

Então podemos nos perguntar: se a Internet permeia tanto nossas vidas, existe uma diferença entre o real e o virtual? Sinceramente sempre acreditei que não. Obviamente o mundo virtual é somente uma extensão do mundo real, sempre foi e cada vez mais esses limites diminuem. O advento da Internet das coisas (do inglês Internet of Things ou IoT) traz a conectividade para praticamente todo e qualquer contexto de nossas vidas reais.

Logo, acredito sim que devemos discernir sobre nossa exposição e interação com o mundo. Não acredito que seja necessário nos fecharmos num bunker esperando um apocalipse criado pela Skynet, mas, saber que cada coisa que dizemos, comentário que postamos ou e-mail que enviamos está sendo disseminado através de incontáveis redes de computadores ao redor do mundo. O mesmo para cada foto postada, site visitado e por aí vai. São inúmeras possibilidades sem precisar sequer entrar no campo da paranoia.

As grandes empresas da Internet nos oferecem serviços muitas vezes gratuitos como e-mails, chat e acesso à redes sociais e é no mínimo ingenuidade imaginar que não esperam nada em troca. A moeda de troca são nossas informações pessoais e basta ler os Termos de Serviço e estará claro que tudo o que fazemos através desses serviços será coletado com propósitos que só eles sabem quais são, podem ser a simples criação de um perfil de comportamento do consumidor até a venda de nossas informações para terceiros.

Certa vez vi uma pessoa reclamando de que o Facebook estava sugerindo propagandas e isso prova o tipo de comportamento no mínimo inocente ao qual me refiro, afinal, a troco de quê uma empresa consegue manter uma infraestrutura de tecnologia gigantesca que suporta milhões de conexões simultâneas ao redor do mundo, senão para através desse serviço obter vantagens comerciais? Tudo isso custa dinheiro afinal.

Não é difícil encontrar exemplos de exposição exagerada ou descuidada e discernir sobre o que é pertinente no nosso comportamento “virtual” é importante. Basta fazermos um breve exercício sobre como seria se as pessoas interagissem pessoalmente da mesma forma como o fazem virtualmente, isso não significa que você não pode postar a foto do seu prato favorito, de como estava feliz no show com os amigos, compartilhar a experiência daquela viagem, ou sobre o nascimento do seu filho que provavelmente foi o momento mais feliz da sua vida.

Mas devemos ter a mesma preocupação que teríamos ao não divulgar alguma informação sensível a um completo estranho na rua, com o agravante de que uma vez na Internet, essa informação mal divulgada percorrerá caminhos que você sequer pode imaginar.

É necessário ter noção do contexto no qual estamos inseridos para tomarmos os cuidados que julguemos necessários. Afinal, é importante que cada um tome conta da sua vida, conscientes da forma como interagimos e nos expomos seja no mundo real ou virtual. Já que nem sempre o mundo é um lugar legal.

Referências:

http://cartilha.cert.br


Working with Internet and technology for over 15 years it’s undeniable all the facilities which we can use: connectivity, interactivity, access to information without limits and so on. However, one aspect that always bothered me is about security and privacy on the Internet.

It’s almost scary as people in general are not concerned about their security and privacy on the Internet. Perhaps this is a natural consequence of the popularization and high level of insertion that Internet gained in our lives, but despite never having deprived of the use of technology, always questioned and worry about some aspects like privacy and security on the Internet.

This concern has various reasons and you don’t need to be information technology expert to know that we are subject to various drawbacks from the use of our personal data for on-line fraud (or real), Spam sending and even bullying or other forms of violence.

Then we can ask ourselves: If the Internet permeates our lives that much, there is a difference between real and virtual? Honestly always believed that not. Obviously that the virtual world is just an extension of the real world, always has been and this limit decreases each day. The Internet of Things for example provides connectivity to virtually any context of our real lives.

So, I believe that we must discern our exposure and interaction with the world. I don’t think that we need to close ourselves in a bunker waiting for an apocalypse created by Skynet, but, have conscience that everything we say, comment we post or e-mail that we send is being disseminated through countless computer networks around the world. The same for each picture posted, visited website e so on. There are countless possibilities and we don’t even enter the field of paranoia.

The big Internet companies offered us free services as e-mails, chat and access to the social networks and is at least naive to believe that they don’t expect anything back. The trading currency is our personal information and we just need to read the Terms of Service to be clear that everything we do through these services will be collected for purposes that only they know what, since a simple consumer behavior profile or to sell our information to other companies.

I saw once one person complaining that Facebook was suggesting ads and this proves the kind of behavior that I mean, after all, why and how a company will maintain a giant technology structure that support millions of simultaneous connections around the world, if not to through this service gain some commercial advantage? All this costs money after all.

It is not difficult to find examples of overexposure and it is important to discern about what is pertinent in our “virtual” behavior. We can make an exercise and compare what if people interact personally as the same way as they do virtually, that doesn’t mean that you cannot post the picture of your favorite food, or how you are happy at that band concert with your friends, share the experience of your last travel, or how happy you are after your first son birth, probably the happiest moment off your life.

But we must have the same concern that we would have to not disclose any important information to a stranger on the street, with the factor that once on the Internet, this information will travel for roads that you can’t even imagine.

We must be aware of the context and take care that we deem necessary. After all, it is important that which one take care of your own life, aware of how we interact and expose ourselves in the real or virtual world. Once that the world is not always a nice place.

References:

http://cartilha.cert.br (Portuguese only)

Desktop leve e rápido com Ubuntu Linux e Enlightenment | Lightweight and fast desktop with Ubuntu Linux and Enlightenment

English bellow.

Já tendo utilizado várias distribuições Linux como servidor ou desktop há anos, além de sistemas BSD (FreeBSD, OpenBSD, DesktopBSD), sempre optei por um sistema com o mínimo necessário, onde menos é mais.

Entretanto não se pode negar as diversas facilidades que economizam horas de trabalho para configurar o suporte ao hardware. Venho me surpreendendo em como alguns dispositivos funcionam com pouco ou nenhum esforço, tornando o Linux realmente um sistema acessível para usuários no dia a dia.

Como tudo tem um preço, alguns usuários mais experientes e/ou exigentes podem ficar insatisfeitos ao notar eventual queda de performance por conta de tantos recursos sendo consumidos com essas facilidades oferecidas já que não existe almoço grátis. Observo isso em distribuições como Ubuntu Desktop, que ainda sim tem feito ótimo trabalho na popularização do Linux para usuários.

Pela boa frequência de atualizações das versões, grande oferta de softwares disponíveis em seus repositórios e facilidade de manter o sistema atualizado, venho utilizando o Ubuntu Linux como desktop na sua versão de suporte estendido (LTS, Long Term Support). Mas como acho seu ambiente desktop muito pesado, optei por uma instalação limpa e mais leve para ter somente as ferramentas que necessito. Ainda lembro como era ter pouco processamento, memória e espaço em disco para tentar compilar e rodar um Slackware 4 ou Red Hat 5.

Para realizar uma instalação enxuta do Ubuntu Linux com objetivo de deixar meu ambiente mais rápido utilizei a versão servidor 14.04 LTS, e não a desktop. Após finalizar todo processo de instalação e configuração do sistema operacional, o que temos na verdade é um sistema voltado para servidor instalado na máquina.

O objetivo é transformar esse sistema em um desktop com suporte ao ambiente gráfico e alguns softwares para escritório, áudio e vídeo, Internet e até alguma diversão.

A base do ambiente gráfico é o Xorg e escolhi o Enlightenment como gerenciador de janelas na sua versão E19. O Enlightenment é um gerenciador bem antigo e que consegue entregar grandes efeitos visuais com boa estabilidade e consumindo poucos recursos. É interessante sair um pouco daquele visual tradicional do desktop que estamos acostumados.

Como essa versão do Enlightenment não está disponível na árvore de pacotes do Ubuntu 14.04, utilizei um repositório de terceiros. O Bodhi Linux é uma distribuição baseada no Ubuntu com um ambiente gráfico completo baseado no E19. Utilizo o repositório do Bodhi Linux somente para instalação do E19 pois o objetivo é uma instalação customizada mas sem muito trabalho. Os demais softwares foram todos obtidos a partir da árvore do próprio Ubuntu Linux. Essencialmente foi necessário somente instalar alguns pacotes chave e depois adicionar o repositório do Bodhi Linux para a instalação do E19.

Partindo do arquivo sources.list original do Ubuntu Linux, removemos o comentário dos repositórios ‘partner’ e ‘extras’, deixando-o assim:

deb http://br.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty main restricted

deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

deb http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe

deb http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

deb http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted
deb http://security.ubuntu.com/ubuntu trusty-security universe
deb-src http://security.ubuntu.com/ubuntu trusty-security universe
deb http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse

deb http://archive.canonical.com/ubuntu trusty partner
deb-src http://archive.canonical.com/ubuntu trusty partner

deb http://extras.ubuntu.com/ubuntu trusty main
deb-src http://extras.ubuntu.com/ubuntu trusty main

É importante atualizar o sistema após o término da sua instalação.

$ sudo apt-get update; sudo apt-get dist-upgrade

Sigo então com a instalação do que será a base do meu sistema, Xorg e seus drivers, algumas fontes e ferramentas diversas. O driver de vídeo escolhido para o Xorg é o Intel mas devemos escolher o adequado a cada máquina através de uma busca com o apt-cache search, pode-se também instalar o driver proprietário, por exemplo os pacotes: nvidia-331 ou nvidia-340.

$ sudo apt-get install build-essential xorg xserver-xorg-video-intel xserver-xorg-input-evdev xserver-xorg-input-mouse xserver-xorg-input-synaptics xfonts-100dpi xfonts-75dpi ttf-ubuntu-font-family unrar unzip zip

Para a instalação de softwares para escritório, áudio e vídeo e Internet que utilizo:

$ sudo apt-get install deluge firefox flashplugin-installer skype libreoffice-calc libreoffice-writer

Feito isso podemos prosseguir com a instalação do E19. Deixo essa etapa para o final pois no repositório do Bodhi Linux existe também uma versão do LibreOffice e é uma preferência minha utilizar as versões disponíveis no repositório do Ubuntu. Adicionamos ao final do arquivo sources.list o repositório do Bodhi Linux:

deb http://packages.bodhilinux.com/bodhi trusty main

Após atualizar a árvore com apt-get update, podemos instalar o E19 e algumas ferramentas como o Pulse Audio para gerenciamento de áudio, Bluez para bluetooth, connman para conexões de rede e a versão do player VLC:

$ sudo apt-get install pulseaudio bluez connman econnman bodhi-desktop bodhi-vlc

Agora com todos os softwares instalados o desktop está pronto para ser utilizado. Observe que também opto por não instalar um gerenciador de login, mantendo o computador com login via terminal. É necessário então criar um arquivo que será utilizado para iniciar o ambiente gráfico, o bom e velho .xinitrc:

exec enlightenment_start

Essa única linha é suficiente para iniciar o E19. O arquivo deve ser salvo no diretório do usuário com permissão de leitura e para iniciar o ambiente gráfico após efetuar login via terminal basta digitar:

$ startx

Se tudo ocorreu bem principalmente com a instalação dos drivers de suporte do Xorg, o E19 iniciará em seu modo de configuração. Esse gerenciador de janelas é altamente configurável e vale a pena olhar com calma para deixá-lo de acordo com sua necessidade.

Dessa forma conseguimos a instalação mínima de um sistema desktop para utilização no dia a dia. Claro que outros programas como um gerenciador de login como o LightDM poderão ser instalados juntamente com suas dependências, mas esse básico inicial já ocupa um espaço menor do que um desktop padrão, cerca de 3 Gb a menos de espaço em disco, além de recursos de processamento e memória utilizados pelas dezenas de ferramentas e facilidades que acompanham o Ubuntu Desktop. Nesse caso você tem a liberdade de escolher somente o que realmente necessita.

Uma última dica é o gerenciador de janelas DWM, ele é muito leve e consome pouquíssimo recurso. Claro que também entrega menos facilidades mas com um pouco de tempo pode-se tirar um bom proveito. E para a diversão vale a pena instalar o Freeciv.

Atualização:

É necessário que o usuário seja adicionado ao grupo “audio”, do contrário o módulo pulse mixer não funcionará adequadamente no E19. Faça login novamente após a alteração:

$ sudo adduser ${USER} audio

Referências:

http://www.nuxified.org/article/comparing_window_managers_which_best_you
https://wiki.ubuntu.com/CustomXSession
https://help.ubuntu.com/community/Installation/LowMemorySystems
http://dwm.suckless.org/tutorial
http://www.bodhilinux.com
http://freeciv.wikia.com


I’ve already used several Linux distribuitons as server or desktop for years, as well BSD systems (FreeBSD, OpenBSD, DesktopBSD), and always choose systems with the minimal, where less is more.

However I can’t deny that many facilities that save hours of work to configure and set up hardware support. I’ve been surprised with how some devices work out of the box with little or no effort, making the Linux a system accessible to the users on daily needs.

As everything have a price, some experienced and/or demanding users may become unhappy to notice an eventual performance decrease caused by the resources being consumed with these facilities since there is no free lunch. I see this in distros like Ubuntu Desktop, which has done a great job making Linux more popular to the users.

With a good frequency of releases, great offer of softwares on its repositories and ease to keep the system up to date, I’ve been using the Ubuntu Linux LTS as desktop. But as I think that is a heavyweight desktop, I choose a clean and lightweight install to have only the tools that I really need. I still remember what it was compile and run Slackware 4 or Red Hat 5 with low processing, memory and disk space.

To perform a clean install of Ubundu Linux in order to have a faster environment I used the server edition of 14.04 LTS, not the desktop. After finishing the install and configuration processes, what we have is a server system on the machine.

The goal is to turn this system into a desktop with fully graphical support and some office, audio and video, Internet and even some fun.

The graphical environment core is the Xorg and I choose the Enlightenment as the window manager in its version E19. Enlightenment is a known window manager and delivers great visual effects with great stability demanding fewer resources. It is interesting to have something different of the traditional desktop look and feel.

As this version of Enlightenment is not available in the repositories, I used a third-party repository. Bodhi Linux is a Linux distro based on Ubuntu with full graphical environment based on E19. I used the Bodhi Linux repository only to install the E19 because the main goal is a custom install without much work. The remaining software were all installed from the Ubuntu Linux repositories. Essentially we just need to install some key packages and then add the Bodhi Linux repository to install the E19.

Starting from the original sources.list file, we remove the commentaries from ‘partner’ and ‘extras’ repositories, leaving like this:

deb http://br.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty main restricted

deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

deb http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe

deb http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

deb http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted
deb http://security.ubuntu.com/ubuntu trusty-security universe
deb-src http://security.ubuntu.com/ubuntu trusty-security universe
deb http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse

deb http://archive.canonical.com/ubuntu trusty partner
deb-src http://archive.canonical.com/ubuntu trusty partner

deb http://extras.ubuntu.com/ubuntu trusty main
deb-src http://extras.ubuntu.com/ubuntu trusty main

It is important update the system after finished the installation.

$ sudo apt-get update; sudo apt-get dist-upgrade

Now I can perform the base installation of the system with Xorg and its drivers, some fonts and other tools. The video drive for the Xorg was the Intel but we need to choose the right one for each machine using the apt-cache search, its possible to choose the proprietary driver also, for example the packages: nvidia-331 ou nvidia-340.

$ sudo apt-get install build-essential xorg xserver-xorg-video-intel xserver-xorg-input-evdev xserver-xorg-input-mouse xserver-xorg-input-synaptics xfonts-100dpi xfonts-75dpi ttf-ubuntu-font-family unrar unzip zip

Then to install the office, audio and video and Internet softwares that I need:

$ sudo apt-get install deluge firefox flashplugin-installer skype libreoffice-calc libreoffice-writer

After this we can proceed with the E19 install. I leave this step to the end because on the Bodhi Linux repository there is also a version of LibreOffice and I prefer to keep using the one on Ubuntu repository. We add in the end of sources.list file the Bodhi Linux repository:

deb http://packages.bodhilinux.com/bodhi trusty main

After update the tree with apt-get update we can install the E19 and some tools like Pulse Audio for audio management, Bluez for bluetooth, connman for the network connections and the VLC media player:

$ sudo apt-get install pulseaudio bluez connman econnman bodhi-desktop bodhi-vlc

Now with all the softwares installed the desktop is ready to use. Notice that I also choose not to install a display manager, keeping the computer with login via terminal. So we need to create the file that will call the window manager, the old and good .xinitrc:

exec enlightenment_start

This line is enough to start the E19. The file must be saved on the home user directory with read permission and to start the windows manager after login via terminal just type:

$ startx

If everything runs fine with the Xorg drivers, E19 will start in the configuration mode. This windows manager is highly configurable and is worth take a look to make it according to your need.

Thus we got a minimal desktop system install for daily use. Of course that other softwares as a display manager like LightDM can be installed with its dependencies, but this basic install takes only a portion of a desktop default, about 3 Gb less disk space, and also less resources used by dozen of tools and facilities that come with Ubuntu Desktop. In that case you have the freewill to choose only what you really need.

A last tip is the windows manager DWM, it is very lightweight. Of course it also delivers less functions but with a little of time you can have a great advantage. And for the fun part, it worth install Freeciv.

Update:

You need to add the current user to the “audio” group, otherwise the pulse mixer module will not work in the E19. Login again after change:

$ sudo adduser ${USER} audio

References:

http://www.nuxified.org/article/comparing_window_managers_which_best_you
https://wiki.ubuntu.com/CustomXSession
https://help.ubuntu.com/community/Installation/LowMemorySystems
http://dwm.suckless.org/tutorial
http://www.bodhilinux.com
http://freeciv.wikia.com

Processamento distribuído com o BOINC | Distributed processing with BOINC

English bellow.

Processamento distribuído é um conceito muito interessante na computação. A ideia de dividir o trabalho entre vários nós (computadores) de forma que cada um deles processe e retorne sua parte é muito utilizada em vários ramos.

Uma forma de ver isso na prática é através do software BOINC (Berkeley Open Infrastructure for Network Computing). Um software que ao ser instalado aproveitará ciclos ociosos da máquina para processar informações de projetos científicos e retornar os resultados.

Um exemplo é o projeto SETI@home, que pesquisa formas de vida inteligentes no espaço. Quem já viu o filme Contato (baseado no romance de Carl Sagan) sabe do que se trata.

Existem muitos projetos disponíveis no site do BOINC em diversas áreas de conhecimento. Para participar doando um pouco de seu computador é simples e o software está disponível para várias plataformas (Linux, Windows, Mac). Abaixo um pequeno passo a passo da instalação para o Ubuntu Linux:

Após acessar o site http://boinc.berkeley.edu/projects.php para escolher o projeto, ou os projetos para participar, é necessário acessar o site do projeto e criar uma conta. Com isso cria-se um perfil que contabilizará todo trabalho realizado para aquele projeto. Em seguida basta fazer download do software BOINC e instalar:

$ sudo apt-get install boinc-client

No caso específico do projeto SETI@home, é necessário também instalar o pacote com seu aplicativo:

$ sudo apt-get install boinc-app-seti

E para finalizar vale a pena instalar também uma interface gráfica:

$ sudo apt-get install boinc-manager

Agora é adicionar os projetos nos quais possui cadastro clicando em “Tools/Add project or account manager” na interface gráfica, ou diretamente no cliente via terminal:

$ boinccmd --project_attach project_url account_key

Onde project_url é o endereço do projeto no qual está inscrito, e account_key será a chave disponível através do perfil privado no site do projeto.

Através das páginas dos projetos também é possível configurar como e quando seu computador será utilizado para o processamento, o mesmo pode ser feito através da interface gráfica ou do cliente para terminal.

Pelo menos é um bom motivo para deixar o computador ligado.


Distributed processing is a very interesting concept in computing. The idea of divide the work between many nodes (computers) as each one processes and returns your share is very used in many areas.

With the BOINC (Berkeley Open Infrastructure for Network Computing) it’s possible to see this. This software can use the idle cycles of the computer to process information from scientific projects returning them the results.

SETI@home is an example of a project that searches intelligent life on space. Who already saw the movie Contact (based on Carl Sagan’s romance) knows what it is.

There’s a lot of projects available at BOINC website in many areas of knowledge. To participate donating a share of your computer it’s simple and the software are available in many platforms (Linux, Windows, Mac). Bellow a little how-to install on Ubuntu Linux:

After accessing the website http://boinc.berkeley.edu/projects.php to choose the project, or the projects to participate, you will need to access the project website to create a user account. This profile will count the work done. You now can download and install the BOINC:

$ sudo apt-get install boinc-client

For the SETI@home, you also need to install the package with the application:

$ sudo apt-get install boinc-app-seti

It’s possible install a graphical user interface:

$ sudo apt-get install boinc-manager

Now it’s just add the project which you are signed by clicking “Tools/Add project or account manager” on the graphical interface, or directly via terminal:

$ boinccmd --project_attach project_url account_key

Where project_url is the project’s address and account_key is the key available on your private profile on the project.

Also on the project’s page it’s possible to configure how and when your computer will be used, the same can be set through the graphical interface or the terminal client.

At least it’s a good reason the leave the computer on.