First steps with BeagleBoard: Keyboard not recognised...
Pages: 1 2
Terje Slettebø (285) 275 posts |
Hi all. I’m currently making my baby steps with the BoageBoard (revision C3), and using the very helpful instructions here (thanks Trevor and Jeffrey!), I’ve set up an SD card with the boot script and RISC OS, and when I turn it on, I get first the BeagleBoard intro screen, and soon after, it boots RISC OS into the supervisor prompt. Yay! That means the SD card worked (I didn’t have to change the boot sequence, using the User/Boot button, something I thought would be necessary), and that it’s compatible with my monitor (a 24” BenQ monitor). However, all is not “rosy”... Regardless of what keyboard I attach to the USB hub (which also powers the BeagleBoard), RISC OS doesn’t recognise the keyboard (“No keyboard present – autobooting”), which is something of a showstopper… Here’s my setup:
Admittably, I took a chance when I bought the USB hub, as I bought it from a local computer shop, and they didn’t have the exact models listed on the hardware compatibility page. I connected the BeagleBoard to the hub, as well as a keyboard and mouse. Later, when it didn’t recognise the keyboard, I tried another keyboard (the Logitech one), and I also tried not plugging in the mouse, and trying to plug the BeagleBoard and keyboard in different USB ports on the hub (resetting the BeagleBoard each time, of course), but to no avail. What I’d like to know from you, dear members of this community, is, in your experience, what could be the most likely reason for the failure to recognise the keyboard: BeagleBoard/RISC OS not being compatible with the USB hub, not being compatible with the USB keyboard, or something else? I’ll happily buy a new hub or keyboard, if that’s what is required to solve the problem… My newfound hope for the ARM/RISC OS platform, and all I’ve done in relation to this, lately (such as updating the extASM assembler), has been motivated by being able to run RISC OS on the BeagleBoard, so this is very important to me… If it could help to debug the problem, I could have a go at using the RS232 interface, as well, but as I’m newbie when it comes to the BeagleBoard, I could need some “hand holding” in that case. Regards, Terje P.S. Once I (hopefully) get things up and running, I’ll update the hardware and software compatibility pages with what I’ve got. Another stumbling block, although likely a smaller one, was that I haven’t managed to format the USB memory stick using SCSIFormat on the VirtualAcorn, as it complains that SCSIFS is not present… Nevertheless, as a last resort, maybe I could get the memory stick formatted by one of the good members of this community. However, the above mentioned keyboard/mouse problem is a more pressing one. |
Terje Slettebø (285) 275 posts |
P.S. I realise that I have to do as much as possible, myself, to resolve these problems, so I’ve now tested the BeagleBoard with the Linux Angstrom distribution as described here. I’ve also attached the serial cable, and using this setup, I’m able to boot Linux, and – through the serial connection – log in and test playing audio and video, which works. However, I still don’t get any response from the keyboard and mouse attached to the USB hub which is attached to the BeagleBoard. |
Chris Gransden (337) 1200 posts |
You can safely ignore the “No keyboard present – autobooting”. Which usb port do you have you hub plugged into. The OTG port requires a certain type of cable to work. Have you tried booting to the supervisor prompt without the hub plugged in. Then plug it in. Sometimes this helps. |
Terje Slettebø (285) 275 posts |
Additional note: I suspect I may not be doing it correctly… The USB hub has, according to the manual, one mini B-type upstream connector, and seven A-type downstream connectors. The hub came with a A-type to mini B-type cable (meant to connect the hub to a PC). Since the BeableBoard has a mini AB-type connector for the USB OTG (and an A-type connector for the USB Host port, but as I understand, we don’t yet have driver support for this one), I connected the cable with the mini B connector to the BeagleBoard, and the A connector to one of the USB hub downstream ports… I suspect that the BeagleBoard should have been connected from the OTG port to the upstream connector on the hub, using a mini (A|B) connector at both ends…? Don’t laugh: I’m more of a software developer than a hardware engineer… :) I don’t know that much about USB, but I’ll certainly be reading up on it now… |
Chris Gransden (337) 1200 posts |
The port next to the SD card slot is the best one to use. |
Terje Slettebø (285) 275 posts |
Hi Chris and thanks for your replies. Regarding the slot to use: Ah, yes, I see that now from the “Getting started” page… I originally connected the hub to the OTG port, to power the board from the hub, so I could avoid having to use a 5V power supply, but I see now that for one thing, I then ran into the problem of connecting to the hub, since the other end of the cable could only connect to one of the “downstream” connectors… I’ll get a 5V power supply, connect the hub to the board’s USB Host port, and try again… |
Chris Gransden (337) 1200 posts |
Something you could try if you haven’t got a spare 5V power supply lying around. Plug the hub power supply into the Beagleboard. With any luck you should have enough power from the Beagleboard to get keyboard and mouse working. |
Terje Slettebø (285) 275 posts |
Good idea! I do have a variable voltage power supply, which claims to be regulatable from 5-24V, but when I measure the voltage, in the lower end, it’s between 5.5 and 6V, so I was a little wary of using that… However, I see that the hub power supply is given as 5V, and when measuring it, it’s correct. It has a wrong power connector, but I should be able to adapt that to a different plug. |
Terje Slettebø (285) 275 posts |
It now works, thanks a lot! |
Trevor Johnson (329) 1645 posts |
Glad you got it sorted in the end. As you’ve probably seen now, most of the hurdles to be overcome are documented in the forums, although haven’t necessarily made it into the wiki yet.
And thanks to Dave for starting the page in the first place. |
Terje Slettebø (285) 275 posts |
Yes; in fact, if I had followed the instructions on that page exactly, I wouldn’t have had any problems, because it clearly states that you need to use the larger (USB Host) socket, not the OTG one: “the USB hub plugs into the BeagleBoard’s larger USB socket (not the smaller OTG socket, as there are some remaining issues with MUSBDriver)” Moreover, I didn’t know much about USB at the time, so I didn’t catch the nonsensical arrangement of connecting the OTG port (meant to be used as host) to one of the hub’s downstream ports… I’ve now read up on USB at Wikipedia, and recognising that USB is rather important in a BeagleBoard system, I’ve recently ordered a book about it. |
Jeffrey Lee (213) 6048 posts |
A book telling you how to write a USB driver for Windows? Not that useful for RISC OS, I think :) If you want to know how USB works then you can just download the USB 2.0 specification and read that instead. It talks about simple stuff like which plugs go in which sockets (although I think you’ve got that now!), how the signals are sent over the cables, the standard commands that all USB devices must support, etc. There’s also this wiki page which gives some information about how the stack is implemented within RISC OS. |
Terje Slettebø (285) 275 posts |
Hi Jeffrey.
First, it seems to me that a very large part of the book is non-Windows specific, unless you know something I don’t… Secondly, I ordered the book for two reasons:
That said, I had a look at the USB 2.0 specification, now, and it’s actually quite readable… I feel there’s not an either/or in these situations: For example, I’ve used the ARM ARM extensively for implementing the extASM assembler, where the level of detail is essential, but for someone learning assembly programming from the beginning, it doesn’t provide much guidance… Thus, I feel that for me, not having that much of a hardware background, a book, taking a more gentle approach, and expanding on things that may otherwise be covered just briefly in a specification, as well as giving me something I can read away from the PC, may be a useful supplement… As usual, YMMV… :) In any case, thanks for the pointers to the standard and RISC OS USB stack. A standard is certainly a good reference, when you want to get down to the precise details. |
Terje Slettebø (285) 275 posts |
Addition: I’ve now got a USB memory stick up and running. :) I thought this would be problematic, as the instructions says that this needs to be formatted using SCSIForm, and I didn’t get that one to work on the VirtualAcorn… Yet, when I just tried a memory stick I had, presumably FAT formatted, as it’s readable on Windows, I could use it to transfer files between Windows and the BeagleBoard! Have I missed something? Is it now possible to read FAT-formatted memory sticks on RISC OS? I downloaded the self-extracting HardDisc4 file to the memory stick on Windows, plugged it into the BeagleBoard USB hub, and was able to run it, resulting in a minimum root diretory setup. Yay! You’ve done a superb job, Jeffrey and the ROOL gang! Now, I have a working SCSIForm application on the BeagleBoard, instead, and it recognises the memory stick. Should I format it, just in case? And would that interfer with using it on the PC, as well? Next thing up: Getting a USB Ethernet port, and trying out various other USB devices I’ve got, such as a USB hard drive. P.S. Trevor: Good job on cleaning up the hardware compatibility list page. |
Steffen Huber (91) 1945 posts |
Hi Terje, I have read the book you have ordered, and it is probably the best general purpose book on USB available. It is very good at explaining the low-level, device-type independant part of USB, and it names a few interesting details about the Windows USB implementation which helps a lot to understand why some devices behave like they do (instead of behaving according to the standard). The book is a bit weak in explaining the different USB classes. If you expect e.g. details about mass storage access, or PTP access, or HID access, you will be disappointed. But the USB specs for the driver classes are quite accessible and a lot easier to read once you have read the book. There is also a lot about limits of embedded systems and a bit of hardware info about USB chipsets usually used in embedded systems. And there is a bit of USB driver writing info which is mostly Windows centric – all of this is useless for the RISC OS USB developer, but easily skipped. The remaining stuff is really quite good. |
Trevor Johnson (329) 1645 posts |
Seemingly. I used the HP USB Disk Storage Format Tool listed in this post .
Extracting on the RAM disc is considerably quicker. You could then run SCSIForm to reformat the stick to ADFS but of course it’d interfere with data transfer from a PC. You’ll probably find it’s most practical to have 2 memory sticks (both an ADFS and a FAT32) – at least until you get your internet connection sorted.
It still renders differently under RO NetSurf and Win Firefox but never mind. |
Dave Higton (281) 668 posts |
Her book is generally well respected in the Linux USB mailing lists. |
Jeffrey Lee (213) 6048 posts |
I’m not sure of exactly when the Castle USB mass storage drivers were released, but I’m fairly certain that support for FAT sticks has been there since they were released. Likewise, the UniPod in my RiscPC had no trouble reading a FAT formatted stick. However the Castle/ROOL stack relies on DOSFS for FAT formatted sticks, which means it will only support FAT partitions up to 2GB in size (due to the 2GB image filing system limit). AFAIK the Simtec stack (as used in the UniPod) relies on DOSFS for FAT discs too, so there’ll be a 2GB limit there as well.
Fair enough. I just saw “Windows drivers” mentioned on the Amazon page and started to get bad thoughts :) |
Terje Slettebø (285) 275 posts |
(This is turning into something of a series, but it might be interesting to others going the same route, i.e. getting started with the BeagleBoard) Having got keyboard, mouse, monitor and filing system (USB stick) working on first attempt (once I figured out the USB cabling, a confusion made possible by the cabling standard), I figured now was the time to get some heavyweight storage devices available (beyond the 1 GB FAT-formatted USB stick), I connected an external 160 GB IDE disk, with a USB interface. That went flawlessly… However, before that, I decided I wanted to have a little fun with the USB, learning more how it behaved, so mostly for fun, I attached yet another keyboard and mouse to it (when it was running). I was rather amazed finding that both keyboards and both mice could be used, at the same time…! This is quite a piece of work… I figured that the best I could hope for was that one of the keyboards/mice was ignored, but on the contrary, they all worked… Disconnecting them again made the USB controller a bit confused, it seemed, as it now complained the “disk was empty” (the USB stick), even though it was still plugged in. Nevertheless, I don’t plan to connect and disconnect keyboards while it’s turned on, so this is not an issue, and it could be a temporary problem, as well… :) As mentioned, more seriously, I wanted to see if it would work with my external USB IDE drive, and it did, wonderfully… I’m currently formatting it with SCSIForm (it used to have NTFS). A little tidbit: This very harddrive was once in use in my Iyonix (until the Iyonix stopped working a while ago), and it’s finding new use in another ARM-powered computer… :) Tomorrow, I’ll go shopping for an USB Ethernet adapter… |
Terje Slettebø (285) 275 posts |
Well, that didn’t go quite that smooth… It seems I got quite a bit of the way, but I’m not there, yet (having a working network connection)... Hopefully, someone here might have some suggestions for how to proceed… Here’s what I’ve done:
EtherUSB driver for USB network adapters DCI version: 4.04 Driver prefix: ej Unit 0 (USB bus 1, address 6, Devices:$.USB6): Backend: MCS7830 Ethernet address: 00:0A:CD:1A:4C:59 Link status: up, unknown speed, unknown duplex, polarity correct, auto Controller mode: unicast, broadcast Frame types claimed: IEEE 802.3 handler=(FC329EE4,FB407504) Ethernet 8035 (normal) handler=(FC2E7DC4,FB407414) Ethernet 0806 (normal) handler=(FC2E7DC4,FB407414) Ethernet 0800 (multicast) handler=(FC2E7DC4,FB407414) Statistics summary: TX frames 93 RX frames 263 TX bytes 6415 RX bytes 55042 TX errors 0 RX errors 0 TX queue length 0 RX unwanted 42 TX queue overflows 0Looks promising, no? Apparently, the Ethernet adapter is one of the recognised ones. Yet, any attempt to ping anything else than “localhost” (including the gateway/router) results in “No route to host” error… Another clue is that the “Interfaces” window of the Internet configuration looks like this: USB [grayed-out checkbox] EtherUSB [Configure…] (Also grayed-out) Any suggestion for what I may try next? It’ll certainly be greatly appreciated… |
James Peacock (318) 129 posts |
Not sure about configure, but it is pretty easy to do it via the command line if you are using DHCP. Try hitting Ctrl-F12 to open a taskwindow and executing ‘dhcpexecute ej0’. |
Terje Slettebø (285) 275 posts |
Thanks for the tip, that seemed to help… Now I at least can ping the gateway, but I still can’t ping e.g. my ISP’s nameservers (they do respond to ping on Windows). I’ll look more into this, tomorrow. I need to read more up on the various Internet related commands in RISC OS. |
Jeffrey Lee (213) 6048 posts |
That sounds like InetSetup can’t find the EtherUSB module, or it can’t find the right version. Are you sure that the module is in System:Modules.Network, and that you didn’t make a typo in the autosense file? Either that or your “manual boot” isn’t working. There shouldn’t be any need to run BootVars and BootRun manually; if you’ve booted to the supervisor prompt then you should be able to run the boot sequence “properly” by issuing either |
James Peacock (318) 129 posts |
I’ve had a chance to lookup what I’m currently using as I’ve not got around to installing a full boot yet. The following works nicely for me. DHCPExecute -w -b ej0 Route add default <Inet$Gateway> ResolverConfig Set Inet$NTPServer pool.ntp.org RMLoad System:Modules.Network.NetTime NetTime_Kick |
Terje Slettebø (285) 275 posts |
Thanks a lot, guys: Now it works perfectly! :) *sheepish grin* There were no System:Modules directory, and I thought it didn’t matter if it was at that location, or something like System:500.Modules (where I originally put it), but apparently it mattered… Also thanks for the tip about a “proper” boot sequence: That worked fine. :) Once I had a proper boot, and the module in the right place, InetSetup found it, and using DHCP, it worked fine. :) One remaining issue is that although NetSurf displays the web pages, it promptly crashes once the page is rendered. The ROOL wiki is down (again), so I can’t check the software compatibility list, but perhaps someone here knows if there are issues with NetSurf on the BeagleBoard (I have the latest version)? Another thing: I find it quite confusing regarding where to put modules in the !Boot application… Does anyone know which modules goes in System:Modules, and which goes in System:XXX.Modules? James: Thanks. If it still hadn’t worked, I would have tried your suggestion next. |
Pages: 1 2