Categoria: Linux

Remove Noise/Echo using PulseAudio

Simple tip to remove noise / echo from audio for recordings
Edit file pulseaudio config:

sudo nano /etc/pulse/

Append to end:

load-module module-echo-cancel source_name=MicEchoOFF
set-default-source MicEchoOFF

Restart pulseaudio server

pulseaudio -k

Backup and Flash SPI Memory using Arduino

After a wrong upgrade firmware of a TP-Link router, the only alternative was to write the flash memory directly.

The strategy I used was: Update only the u-boot sector, which is responsible for loading the kernel, and then updating using tftp [link].

It is possible to write all the firmware, however I preferred this method because it is faster. Writing the whole flash (ex: 8mb) can take about 10min.

I’ve developed a sketch for this purpose, and it can be downloaded from the link:

The entire wiring diagram and details is also on the link above.


Currently (04-2017), it is only compatible with Winbond memories, but can be adapted for other libraries

I used the Arduino DUE because it is 3.3v. If you are using another arduino, you need to create a voltage divider.

The u-boot has 128 kb, which corresponds to the “512 pages” of “256 bytes”. You should adjust the base file size to the multiples of 256. This can be configured directly on the serial console





OpenWRT no TP-LINK WR740N(BR) v6

Segue algumas dicas e informações sobre o roteador TP-LINK  WR740N(BR) v6.0.
Não irei tratar do processo de instalação em detalhes pois o mesmo é simples, e pode ser feito pelo gerenciador do firmware original.

As instruções de instalação em modelos/versões similares pode ser encontrados no endereço:
Aqui são algumas dicas para o modelo específico:  v6.0

Download do firmware:

Informações gerais:

SoC: Qualcomm Atheros QCA9533
Memory (32MB): Zentel A3S56D40GTP
FLASH (4MB): Winbond 25Q32CSI

Acesso a Serial (RX/TX)

Esse modelo tem os conectores bem visíveis, o que pode animar, porém eles não estão soldados, para funcionar é preciso fazer um “jumper” e conecta-lo nos resistores que estão próximos, conforme a imagem:

OBS: Na imagem eu já soldei uma barra de pinos …


Infelizmente o equipamento só tem 4MB de flash, o que limita bastante a instalação de pacotes, nem mesmo é possível instalar a interface gráfica.

O próximo passou que irei tentar é colocar outra memória flash. 😉

Imagens do Hardware

Support multiple versions of Java

On ubuntu/linux you can switch java version using

update-alternatives –config java

But before, you need install the version.

You can use this script (./ to install multiple JVMs

echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done

echo "RUN update-alternatives --config java"

Put this script in folder where has unpacked the JVM(s), an run:


Next use: update-alternatives –config java

Setup DHCP Server on Ubuntu

Sometimes you need to connect a device (Raspberry, IP Cam) directly to the PC. As these devices are mostly configured with dynamic IP, you need to setup a dhcp server.

sudo apt-get install dhcp3-server

Set to start manually if you do not want this service on your PC

sudo /etc/init.d/isc-dhcp-server stop
sudo sh -c "echo 'manual' > /etc/init/isc-dhcp-server.override"

Configure the INTERFACES setting to include eth0
Edit file: /etc/default/isc-dhcp-server , and change


Configure DHCP to assign network addresses in the range to
Edit File: /etc/dhcp/dhcpd.conf , add apppend.
> sudo nano /etc/dhcp/dhcpd.conf

subnet netmask { #network
 range; # Range
 option domain-name-servers,; #Pri DNS , Sec DNS
 option routers; #Gateway
 option broadcast-address; #Broadcast
 default-lease-time 600;
 max-lease-time 7200;


Configure Network (new Ethernet)

1. Open:


2. Add new Ethernet


3. Configure Static IP


4. Connecte in the newly created network

Start DHCP Server

# start DHCP service
sudo service isc-dhcp-server start

# enable forwarding from the ethernet to wireless router
sudo /sbin/iptables --table nat -A POSTROUTING -o wlan0 -j MASQUERADE

Testing the connection

tail /var/log/syslog

Testing the connection


Bluetooth audio from Phone to Ubuntu

This is a short guide to how to send audio from your phone (tested on Android) to your PC (tested on Ubuntu).

I have not found how to enable the functionality in the system settings (PC side)

Support is already implemented in PulseAudio

Now you’ll have to pair the computer with the phone as per normal.

Method 1 – Using GUI (D-FEET)

Use a tool called d-feet, which is available in the Ubuntu repos.

$> sudo apt-get install d-feet

Open d-feet  and find your phone device


Click in Connect on org.bluez.AudioSource , and then click Execute in the dialog that will open

Method 2 – Using Script / Command Line

export BTADAPTER=`dbus-send --system --dest=org.bluez --print-reply / org.bluez.Manager.DefaultAdapter | tail -1 | sed 's/^.*"\(.*\)".*$/\1/'`

dbus-send --system --dest=org.bluez --type=method_call --print-reply \
$BTADAPTER/dev_1C_56_FE_A3_EC_0C org.bluez.AudioSource.Connect

Now all audio from your phone should be streaming through your computer

If this method did not work, check the complete guide in reference: