I am using the Arduino breakout board to evaluate the Edison for a project.
One of the things that this device will have to do is behave as a USB client device. That is, it gets plugged into a PC computer, which will be the USB master, and the Edison device will behave as a USB client or slave.
The Arduino breakout has a J6 connector, which is a standard USB connector. The SW1 slide switch will select whether it behaves as a master or client. I have tried it as a master and plugged a USB mouse into it and it worked right away. However, when set as a client device, I cannot even get the thing to be recognized on my PC laptop. It's like it is is not there.
I have noticed that I can power the Edison through J6 if SW1 is set to USB client, but I do not see how to interact with it as such. Can it be "opened" like a file? What designation does the operating system give it? Is there some setting or command required to make it active?
I cannot find any example code is any language that addresses this.
Thanks in advance to anyone that responds.
Thanks for contacting us!
You can use the USB port J6 on the Edison Arduino board for the following: 5V power (however, it is recommended to power the Edison using an external power supply), programing the Edison over USB, and writing to the onboard flash memory from your computer (For more details please take a look at this link: https://software.intel.com/en-us/appendix-connectors-on-the-intel-edison-board# middle_port Programming, powering, and writing to the onboard flash memory). Additionally, in order to access the Edison mass storage we'd like to suggest these links, where are provided the steps to do it:
- http://dlsloan.ca/Docs/Edison/USBFileTransfer.html http://dlsloan.ca/Docs/Edison/USBFileTransfer.html
- /thread/55510 Access Edison mass-storage from within Edison
Hope you find this information helpful, if you have any question let us know, we are here to help you.
I guess I need to clarify my question.
I just mentioned in passing that if you switch SW1 to "device" mode you could power the Edison board through it.
My REAL question is: With the J6 connector behaving as a DEVICE, as opposed to a master, how do you access that device from a program running on the edison board. How is the device "referred" to? Do you "open" it like a file?
At the moment, when the SW1 is set to make J6 act like a USB DEVICE, my laptop computer does not even "see" it. It's like it is not plugged in to anything. Does something have to be configured on the Edison board to make J6 active as a USB device?
Just to clarify, what you want is to see the Edison as a Mass storage device in your host computer and access to it, right?
For example, if we connect the board in Device mode, we can see the Edson device under My PC -> Devices and Drivers as it is shown in the following screenshot:
If it is not the case, could you please give us more details about what exactly you want?
No. That is not what I want at all.
I want the Edison at J6 to behave as a USB device that accepts command packets (that I will design) and issues responses (that I will design). Nothing else. It will communicate with a "host" application running on the PC side, through that USB link. The host application will also be designed by me. The communication packet protocol will be designed by me.
We have many devices here that we have disgned that use the FTDI USB chip. Using only the off-the-shelf FTDI driver, PID and VID, we plug a PC into that device's USB port and it communicates with that device using a in-house-designed communication command and response set. That is what I want to do with this USB port at J6.
Think of it as being analogous to a simple RS-232 serial port. Once a connection is made electrically and all the hand-shaking is done, then it is just a bi-directional communication link over which my Edison program has full control and on the PC side, another program (written by me) talks to the Edison through the USB link at J6.
Thanks for clarifying it and for your detailed reply. We would like to investigate a little bit more how to accomplish it and as soon as we have useful information we'll let you know.
We'll appreciate your patience during the meantime.
We would like to confirm if you have installed the USB driver for the Edison board, if you doesn't see the Edison when connecting it to the PC, the driver might not be installed. In case you need to install the drivers follow these instructions: https://software.intel.com/en-us/installing-drivers-for-intel-edison-board-with-windows Install USB drivers, also, we recommend to power the Edison through the power jack just to make sure the Edison is being properly powered.
Additionally, could you please provide us a screenshot to see what appears in Device Manager under Ports (COM & LPT) when your Edison is connected?
OK, I will go over this in painful detail with pictures and everything.
First of all, yes, the FTDI drivers - the latest ones, are installed on my system. We use FTDI USB chips a lot here in our designs. We always have the latest. Nevertheless, I downloaded the latest from the FTDI as you instruct and I ran the installer as you instruct. My system already had the latest drivers.
The above is an annotated view of the Edison Arduino breakout with all the connectors. I have labeled them all from bottom to top: J3, J16 and J6 with SW1 below J6. The setting of SW1 determines whether J6 behaves as a Master USB port or a Client (or device). I did not label J1, the barrel connector for external power but you can assume that, at all times, I have a 12VDC 800mA supply plugged into that.
This connector acts as a client and provides the console interface to the Edison OS. If I connect my laptop to that. I get this:
I connect to this port using Putty or any other suitable terminal software. This port works fine. I don't want to do anything else with this port other than use it to execute console commands and monitor console output. It's already doing that.
When I connect my system to this port (no other ports connected), I get the following in Device Manager:
Also, Windows automatically opens a File Explorer window showing the Edison board as a virtual drive. Note that I do NOT get the "USB Serial Port (COMx)" when I am only connected through J16.
I have looked at the page that you asked me to look at, "Install USB Drivers". I think that there is a mistake on this page. On this page, you show a photograph of the Arduino Breakout but the connector (highlighted with the orange box around it) is going into connector J16. Then, your web page tells the user to the page "serial communication session with your board" and then illustrates a connection to the board through the Linux console. That will not work. The Linux console, as far as I can tell, is routed through J3. Go ahead and try to connect to the Linux console through J16. It won't work. I think that that the snap-shot of Device Manager that you show on the "USB Driver Install" page was taken with BOTH J3 and J16 connected.
This is the port connector that I would like to use. I have SW1 on the correct setting for this connector to act as a USB device. When I connect my PC to this, I see the following in Device Manager:
There is nothing there! No composite device, no virtual serial port, no USB serial port. Nothing. Windows is not offering to install a driver for this device because it does not see a device to install a driver for.
I don't have an Arduino breakout board to confirm any behavior on J6, but with J16 and the composite device you should see an enumeration under Network adapters for 'Intel Edison USB RNDIS Device'. On Edison, you can type 'ifconfig' to see the 'usb0' interface IP and use Linux sockets (TCP or UDP) to communicate over the wired connection. You're only going to get COM port/serial like access over the FTDI port/J3 when you disable the shell access ( )
The Intel Arduino breaktout guide says that J6 and J16 share a USB Mux into the USB OTG - which means you should be seeing the same enumerations with the same SW1 switch setting that you do in the other. I did a quick search in the forum and found a related RNDIS discussion, but see my board is enumerating just fine with it ( ). Under Windows 10, I do not see the RNDIS adapter with the proper IP/subnet, so you may have to mess with that on your PC side to get them able to actually talk to each other.