Ubuntu 14.04 won't recognize AXE027 cable

bpowell

Senior Member
#1
Hi All,

Well, I've run into a pickle...

I've followed the documentation in the AXE027 document to try and get Ubuntu to recognize the cable...but I am running into a wall.

I have another FTDI cable (that I don't use for PICAXE...I don't think it's configured to work with PICAXE) and Ubuntu recognizes that just fine and creates the /dev/ttyUSB0.

But, when I install the AXE27, I don't get the /dev/ttyUSB0...I've tried running the modprobe command...no help. I've created the rule in the rules.d directory (using the latest instructions...using ATTR) and no help.

Any ideas?

* Edit: Just tested on an Ubuntu 13.10 machine...worked as advertised...so this seems unique to 14.04
 

bpowell

Senior Member
#2
Hello all,

Well, Here's the scoop...

The current documentation for how to dynamically add the AXE027 to ftdi_sio with modprobe is inaccurate. ftdi_sio has been updated to no longer allow passing of vendor and product codes..there is a new method.

It's late here...but I'll get it documented tomorrow.

Short answer: It's doable!

With this change to the ftdi_sio modprobe method...and with a hack to the wine registry, I'm able to run PE6 under Wine on Ubuntu 14.04...my AXE027 cable passes the self-test no problem (loopback and voltage).

A Free (and awesome) programming environment, on a free (and awesome!) operating system, programming cheap chips supported by a fantastic community! What more could anybody ask?

Screenshot from 2014-03-02 22:10:42.png
 

Technical

Technical Support
Staff member
#3
https://github.com/torvalds/linux/commit/e17c1aa2e1

From kernel 3.12, the ftdi_sio module no longer accepts the "vendor" and "product" parameters, which is a pain as that was the way most people have been doing it for the AXE027 until now...

The new way to add a new VID/PID pair for the ftdi-sio driver is to write them to /sys/bus/usb-serial/drivers/ftdi_sio/new_id:

Code:
# modprobe ftdi_sio 
# echo 0403 bd90 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
 
Last edited:

bpowell

Senior Member
#4
Thanks Technical...I tried this route, but even with "sudo" I lacked the right permissions to echo to the new_id file...so here's my solution (modified from a different process...)

1: Create a bash script in /lib/udev ... I called mine: axe027sense:

Code:
#! /bin/sh
/sbin/modprobe ftdi_sio && echo 0403 bd90 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
2: Save that, and sudo chmod +x it...(make it executable)

3: Create a rule in /etc/udev/rules.d/ per the AXE027 instructions, I called this: 99-axe027.rules

Code:
# /etc/udev/rules.d/99-axe027.rules
# contains axe027 udev rule to patch default
# FTDI product id to AXE027 product id (0xbd90)
ATTR{idProduct}=="bd90", ATTR{idVendor}=="0403", RUN+="/lib/udev/axe027sense"
4: Reload the rules with: sudo udevadm control --reload-rules

5: Plug in the AXE027 and you SHOULD see a /dev/ttyUSB0 directory appear...success!
 

Janne

Senior Member
#6
please, PLEASE, update the manuals regarding to the axe027 install. I just spent a good couple of hours dicking around with this. Or if you don't want to support linux anymore, at least make a clear statement about it. Then I would know better to stay away from it, or that I'm on my own if I try to make it work.

Patching the new_id didn't work for me, but changing the PID to 6001 worked.
 

hippy

Technical Support
Staff member
#7
Linux continually changing things, breaking things which used to work, without providing backwards compatibility, is one of the annoyances and obstacles for anyone wanting to support Linux. It becomes, not just a case of keeping datasheets up to date, but having to keep completely different instructions which vary depending upon which particular Linux and distribution is used.

It's not that we do not wish to support Linux, but that Linux too often pulls the rug from under the feet of those who wish to support it.

I will log the issue. If someone could detail which solution works for which distribution versions then that would probably help us. I believe the latest version of Ubuntu is 15.10.
 

Janne

Senior Member
#8
I think switching the PID (to 6001) would be the most universal solution for different distributions and versions, as the FTDI232 is a very commonly used part. But I suppose that could have some "political" problems, hence why the unigue PID on the axe027 on the 1st place?
 
#9
I followed the steps to set up the AXE027 as given in the above posts but I'm still getting a "can't find /dev/ttyUSB0" error. I'm using a debian stable based distro with kernel 3.16.

Patching the new_id didn't work for me, but changing the PID to 6001 worked.
Janne, how do you change the PID to 6001?

UPDATE

Problem solved, I simply used Technical's commands given above in reply # 3, BUT you may need to create a root account first (when I tried to write to the new_id I got a permission denied when using sudo).

To create a root account, type "sudo passwd <your password>".

Then use "su <your password>" and you can then go ahead and use the modprobe and echo commands. Simple and no need to mess around with workaround files.
 
Last edited:

Jarubell

Senior Member
#12
Thanks SteveDee, I keep getting an Illegal character error. How did your create your .bas file?

I used AXEpad to write the program;

Code:
main: 
high c.1
pause 500
low c.1
pause 500
goto main
But I get that Illegal character error.

I then modified my program to;

Code:
main:high c.1:pause 500:low c.1:pause 500:goto main
Used you method to download it and I now have a blinking LED :)

When I try to download the program with AxePad I get an err=13, permission denied. Is the a way to fix this?


*******************
Alright, I found my answer in this forum :) 'sudo nautilus', opened my file manager as root and there I was able to run Axepad and successfully download the program.
*******************
 
Last edited:

Janne

Senior Member
#13
Glad you got it working!
You can patch the axe027 to work without being root as well. Create a new file in /etc/udev/rules.d/, for example 99-axecable.rules
in that file type the line ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="0660", GROUP="plugdev" ,replacing the vendor and product id with the axe027 ID's.

I cheated a little and used the windows ftdi utility to change the product id. But thanks to the recent driver update that break devices that were using couterfeit FTDI chips by resetting their PID to 0, there are plenty of instructions how to change the product ID using linux only tools :)
 
Top