DroidTerm: A serial port terminal emulator for Android

Last information about the current state of DroidTerm. Please check it out

During my most recent work I had to deal a lot with serial ports and Usb to serial converters. Most of the work used an Android device as a host of a usb-serial converter to send commands through a serial connection to a custom hardware we developed. I certainly missed a good replacement of PuTTY for Android. Some apps I encountered are faulty or does not support the converters I am using for. That is the reason because I started to develop my own replacement.
Finally I shipped the first version of this app that I called DroidTerm.
Here it is the link if you are interested

Features:
– Allows serial connections over Bluetooth Serial Port Profile and Usb.
– It supports FTDI chipsets (nice for Arduino stuff), CP210x family of chipsets and soon Prolific pl2303 chipsets. Not only defaults VID and PID, it supports custom VID and PIDS of other manufacturers too.
– In Usb serial connection, baud rate, data bits, stop bits, parity can be configurable before connection. Flow control is still not supported.

There is plenty of room for new features and improvements:
– Flow control and almost more importantly, a interface to handle it manually.
– Send through serial port a selected filed from a file explorer.
– Macros (Implement a simple BASIC-like language and a simple interface to code on mobile devices would be awesome).
– Add more not supported devices, although that must be done on Usb Serial android library
– Design improvement, that is not my best area so do not expect something much better than the retro style it has now.

If you use it, you find it useful and you have some new ideas or improvements I would love to hear them.

Happy craft!

UPDATE: Devices with PL2303 chipsets are now supported. I would like some feedback about this new feature 🙂
https://lh3.ggpht.com/Ms-VlbxWea5n3yUDqsx1ZZcjswxA-cpR4xC35XcYOszlszUUfXvDq8tkozQ9vKihXvOt=h900-rw

https://lh5.ggpht.com/RSMTKtvYHBNPkMuwiGlRju8iCjq8JW8VQvOVphDYf0gsa-nu7Vk8RNCbXaMqhDGkfA-J=h900-rw

Advertisement

46 thoughts on “DroidTerm: A serial port terminal emulator for Android

  1. Hi,

    i have testet V 1.1.

    Problem:
    Usb Device not supported: PID:3 VID: 7531

    I think i have the old PL2303HXA or PL2303XA Chip.

    Can you support the Old PL2303 Chip´s ???

    other APP Slick 2 USB is running fine.

    • Hi!
      Sorry, I had a little bug and those pid and vid values are shown in decimal values, I will fix this now.
      So your real values are PID:0x0003 VID:0x1d6b. Querying on a usb id repository I saw that values match with Linux foundation as vendor and 3.0 root hub as product. What kind of device are you trying to connect?

      I will try to support too the olds PL2303 although I own the HX version.

      • I just uploaded a new version (google takes some hours to validate new apps) with the bug corrected. Let me know the VID and PID you get.
        Anyways thanks for your feedback!

      • Hi,

        Output from other App which support my PL2303.

        Hope this helps.

        1. /dev/bus/usb/002/001
        Class: 9
        Subclass: 0
        Protocol: 3
        Product Id: 3
        Vendor Id: 7531
        1. /dev/bus/usb/001/001
        Class: 9
        Subclass: 0
        Protocol: 1
        Product Id: 2
        Vendor Id: 7531

      • I think this is the correct one.

        1. /dev/bus/usb/001/002
        Class: 0
        Subclass: 0
        Protocol: 0
        Product Id: 8963
        Vendor Id: 1659

      • That´s right, those are the VID and PID from Prolific and my app actually have support from both of them (My Pl2303 has the same values). The problem is we are getting the PID and VID from the Linux 3.0 hub and that´s weird because your have the next: Android device <- OTG Cable <- PL2303. I tested the app with the same configuration and it is working. I guess it is a dumb question but does your android device support being a usb host?

      • Yes i have otg support.

        Slick 2 usb serial terminal is running fine.

        Output

        067b:2303 PL2303 Serial Port
        Device : /dev/bus/usb/001/002
        Vendor : 0x067b Prolific Technology, Inc.
        Product : 0x2303 PL2303 Serial Port
        Class : 0x00 (Defined at Interface level)
        SubClass : 0x00
        Protocol : 0x00

        Interface (1/1)
        Class : 0xff Vendor Specific Class
        SubClass : 0x00
        Protocol : 0x00

        Endpoint (1/3)
        Attr. : 0x81 (num=1,IN)
        Type : Interrupt
        Interval : 0x01
        Packsize : 0x000a (10)

        Endpoint (2/3)
        Attr. : 0x02 (num=2,OUT)
        Type : Bulk
        Interval : 0x00
        Packsize : 0x0040 (64)

        Endpoint (3/3)
        Attr. : 0x83 (num=3,IN)
        Type : Bulk
        Interval : 0x00
        Packsize : 0x0040 (64)

      • Hi,

        I have a LG G2 device.

        Now it will be detected,
        but im not able to recieve or send commands.

        I think i should try to get a FTDI adapther. It make no sense that you spend so much time for my Pl2303 device.
        Only 1 App from the market runs fine SLIC 2 USB.
        I dont know whats different to Droidterm.
        Thanks for yor Work.
        The App are very good.

      • Because I am testing on nexus devices I should have been aware of the different implementations in Android world. Probably your phone lists devices including the hubs and Nexus does not.
        Probably your PL2303 must be an old one(Although they use same PID and VID), I use as reference PL2303 linux drivers and a sniffing of Windows drivers. Probably both are much oriented to the last PL2303 version. I just tested my device with the last version and I can send and receive.
        I recommend you a FTDI chipset. It is everywhere now.
        Thanks for your feedback, it leads me to some improvements 🙂

  2. Other output when connected.

    1. /dev/bus/usb/002/001
    Class: 9
    Subclass: 0
    Protocol: 3
    Product Id: 3
    Vendor Id: 7531
    1. /dev/bus/usb/001/002
    Class: 0
    Subclass: 0
    Protocol: 0
    Product Id: 8963
    Vendor Id: 1659
    1. /dev/bus/usb/001/001
    Class: 9
    Subclass: 0
    Protocol: 1
    Product Id: 2
    Vendor Id: 7531

  3. I have version 4 running with the Samsung adapter (PL2303). While I like the app Ok, I really wish someone would write a serial communications program for the android that’s along the lines of hyperterminal for windows or the serial communications feature of the program called putty for windows.

      • Maybe I’m missing something. Is send bulk data the only way to send data? I would have though one would be able to send data from the blue screen with the serial port info at the bottom. If one is supposed to be able to send data from that screen, it’s not working that way for me. I’m running the app on a Galaxy Tab 4 10.1

      • Yes, if you press the blue screen keyboard will appear and data will be sent each time you press a key. Sorry, this way is maybe not well indicated.

  4. The keyboard appears when I touch the screen. It doesn’t send any data though. It does receive data on the blue screen. If I go to send bulk data and send the enter key, that works. I guess it doesn’t like the Galaxy tab 4.

  5. It’s closer to the way I’d expect a terminal program to work. I would rather it not have the black line where the text entered is displayed on the screen. Does it emulate a certain terminal type? Like a vt100 or vt220

  6. Is this a dumb question? How does one send a CR/LF or CR+LF using the android virtual keyboard. I cannot seem to figure that out.

  7. Can you load video on YouTube about how connect pl2303 and send data to it.
    if I download Droidterm on my tablet that is enough to run pl2303 or not?

  8. Hello , It is great effort. I reading data from glucose meter which uses cp2103. Via usb I can read and write data. But it also support Bluetooth communication and I don’t know how to communicate with android and meter via Bluetooth. Can you support me by giving me code or apk of Bluetooth communication. Thanks

  9. Have a need for an android usb to serial port app to connect to router interfaces for setup purposes. IPcop / IPFire & the like. These routers make use of text character based menu systems following the command line login for some of their initial setup & config purposes but, Droidterm & all other android usb to serial to terminal emulators I have tested fail to be able to render the text menus (will only render command line text. ) Putty, Hyperterm & standard terminal emulators all seem to be able to display these menus & config of these units is unable to be completed without being able to access them. Could you please advise whether there is a resolution for this or if it is a feature you could consider incorporating.

    • Hi Chris,
      I am afraid is not possible without a considerable amount of effort. Actually I am using the standard TextView component of the Android api to emulate a terminal so it is probably not possible to draw a “ncurses-like” menu on it. Putty and the others works in a lower layer, that is why they can handle it.

      • Thank you for your prompt clarification on this & thanks also for your development work on the app. Despite the menu rendering limitation, it seems to be robust & reliable app & I can still make use of it for monitoring boot process, system statuses & running command lines on these headless router units Regards Chris

      • Hi, Do the latest improvements which have been made to droidterm in relation to extra terminal emulations and extended character sets etc allow for Ncurses type text menus on a connected serial device to be drawn and accessed from its interface window or is this functionality still impossible

        Thanks Regards Chris

  10. Hi there,

    is it just me, or does the ctrl key (Hacker’s Keyboard et al) not work in general? Using DroidTerm for Linux console is not fun without it… Otherwise I have yet to find a better serial port app, great stuff!

    Greetings
    Nick

  11. Hi felhr

    Bought the Pro version for the VT100 functionality. It is great that it works well when it works. However, some comment for your consideration:
    1. My Galaxy Tab running Android 4.4.2 does not always detect the Arduino usb serial port using OTG cable. I have added external battery power to the Arduino but still not always detected. Even power reset on both devices did not change that. When it does not work, I have no sure way of making the communication start! This may not be caused by any bug in your application. Perhaps I haven’t make sure certain pre-conditions are met. Any advice will be appreciated.
    2. Support for screen rotation (even just vertically flip over) will be very helpful. At the moment the OTG cable sticks out at the bottom side of the screen and thus the tablet can’t properly stand up even with a bookstand.
    3. Can sending data out of the tablet be controlled by the keyboard rather than having to touch the “send” soft button on the screen, eg by allowing the use of the return key or other key combinations?

    Thanks. AS

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s