Openwrt Serial Port Programming Tutorial

MPU-MCU UART Connection. The communication between MPU and the MCU on LinkIt Smart 7688 Duo development board is through a Serial port. The MCU communicates with OpenWrt Linux over UART. The table below illustrates the communication between the MCU and the MPU. Blink — programming an Arduino sketch. The MCU implementation is an Arduino. OpenWRT - Serial console recovery on TP-LINK MR 3420. I downloaded and followed the step by step tutorial in order to change my router to OpenWRT. Easy job, you cannot fail. Identify the serial port on the router MR3420 PCB. There you have to solder.

Active4 months ago

I'm trying to setup a virtual serial port though a USB-Bluetooth adapter on Linux and send a message to it through an Android device. I'm on kernel 3.6. I'm able to pair to the device successfully using gnome-bluetooth and also able to send files to it.

To set up the serial port I first add a channel with an SP profile to my adapter:

Then I call 'listen' with rfcomm:

which blocks on

Apparently rfcomm will create /dev/rfcomm0 upon a successful connection. Once that happens, I'd like to use something like cutecom to send messages back and forth to the connected device.

On my Android device I open up a Bluetooth SPP terminal (there are several out there, I tried a few different ones) and try to connect. They all fail.

Given that I can pair successfully and send files without any issues, I know that bluetooth pairing and communication works.

I'm not too sure what else I can try. I used 'sdptool browse' on my local device and the Android device to ensure that there aren't any RFCOMM channel conflicts.

PrisPris
Serial

4 Answers

I seem to have gotten this working now. Bluetooth seems a bit finicky. I'm recapping my steps in full in case someone else finds it useful (though its pretty much what I tried initially). This is for Android JB (4.2.2) on a Nexus 4 and Arch Linux 3.6.7-1, with bluez 4.101 on Gnome 3.6 (w/ gnome-bluetooth).

(this step may not do anything useful)Turn Bluetooth on Android off and disconnect your USB/Bluetooth Adapter from your Linux machine (or if you have an in built one, reset it using hcitool devname reset)

Connect/turn on your bluetooth adapter on Linux. Ensure your adapter is visible (can be set in gnome-bluetooth -- you should see a bluetooth system tray icon).

Turn on bluetooth on your Android device. Use Android to pair to the adapter (I was unable to pair the other way around from Linux). A dialog will come up asking you for a key. Put in any PIN you want. Gnome should pop up a notification asking you for a key; put in the same PIN you entered earlier. Your Android device and the key should be paired at this point.

In Linux, open up a terminal and check what bluetooth services are available by typing in

If you already have a serial port service, make a note of what channel it is. If you don't, you can add the service:

Now listen on this channel using rfcomm:

rfcomm will block, listening for a connection with a message like

Back on Android, I used the BlueTerm application (http://pymasde.es/blueterm/, also available freely on the google play store) though any similar application should work. Open up BlueTerm, go to options > Connect Device: select the paired adapter.

Hopefully, the application was able to connect. You'll see additional verification in the terminal where you blocked listening with a message like:

Anything you type into the BlueTerm app should be going to /dev/rfcomm0. You can see stuff show up as you type by opening up a new terminal and doing something like:

Linux Serial Port Programming

PrisPris

The steps bellow worked for me:

Firstly you have to pair the devices. Pairing is relatively easy.I will call client (who starts talking) and server (who replies)

You have to setup the server before:Server side (as root):

Client side(as root):

Now to open a serial terminal on the client:

Comments:

When you call the last command rfcomm connect... in the client, a device /dev/rfcomm0 will be created and associated to the server /dev/recomm0. This represents the serial link between both

The last server command: rfcomm watch.... will 'listen' for incoming connections. In connection lost, the command will restart a new 'listen' state.

HalosGhost

Openwrt Pdf

3,9139 gold badges22 silver badges36 bronze badges
ismaiaismaia

I solved this with a slight variation to Pris's commands. Give these a shot if anyone is still having problems setting up a rfcomm connection.

This ^ ensures that you are starting with a clean slate everytime you try to setup a connection.

This channel number should be different than any channel currently assigned.

(OPTIONAL) To check channels:

I'm not sure why this next command is needed, but it worked for me.

Then to listen for incomming connections:

NOTE: the bt MAC address in /etc/bluetooth/rfcomm.conf but be your phone's bt MAC. Also the channel in this file must be the same as the one picked for a_channel_#.

Once I did all this, I used a bt terminal emulator on my phone to check it all.

Ethan PlummerEthan Plummer

I have tried different bluetooth tools and it has been hard to find the correct sequence of commands to connect and exchange data with a bluetooth module. Try using rfcomm and minicom:

This is my /etc/bluetooth/rfcomm.conf

Scan for bluetooth devices:

Bind using rfcomm

NB: bind 0 refers to device number 0 (rfcomm0) and 1 is the channel.

Then use minicom with sudo and save a configuration in which you specify the baudrate and the port. You can find more informations here.

Rui F Ribeiro
41.4k16 gold badges94 silver badges158 bronze badges
UserKUserK
8314 gold badges13 silver badges22 bronze badges

Not the answer you're looking for? Browse other questions tagged bluetooth or ask your own question.