USB Stack
Dan Ellis (8978) 3 posts |
I’m looking at refreshing the USB stack. To be honest I never got on well with the term ‘stack’, but that’s what it’s called. Clearly, the code I ported 20 years ago is a bit out of date, despite attempts to hack it to make it work with some more recent components. And I’d like to start with a bottom up approach of getting the roots up to date so that I have a solid base to build on – in particular I’d like to get it working as well as possible with DisplayLink products (with whom and to a large part of which I made successful over the last 16 years), most simply the ethernet portion, and the audio, since they are both standards based. The video portion will be more difficult, as RISC OS doesn’t have a good understanding of multiple displays. USB 3 should be achievable – I was dismayed to find even the onboard ethernet has a ping of over 1ms to my router… So my initial idea of an endpoint would be to get a DisplayLink dock working at 5Gbps Gen1 USB 3 on the Audio and Ethernet side. This is quite a lot of work. I think the DL2 should be working OK, but I haven’t looked at it. DL3 does apparently work in RP linux, but it requires binaries, which would be hard for me to provide for RO – I’ll see what I can do. Any thoughts? |
Steve Pampling (1551) 8198 posts |
This should be first reading: https://www.riscosopen.org/bounty/polls/27 – you could pick up a small reward for the work. |
Dave Higton (1515) 3559 posts |
Your work would be most welcome. |
Alan Robertson (52) 420 posts |
An updated USB stack would be a hugely welcomed by just about everyone, and I second Steve’s suggestion – claim the bounty and get paid for this large piece of work, should you decide to do it. wrt multiple displays, quite a bit of thinking has gone into how to deliver this → https://www.riscosopen.org/wiki/documentation/show/Proposed%20Multiple%20Display%20implementation And finally, just out-of-curiosity – are you coming back to RISC OS after 20 years? |
David J. Ruck (33) 1649 posts |
For me USB3 is the most important feature, as I have a USB3 SSD on the Pi4B and would like to get more speed out of it. I have a Display Link D6000 for the work laptop to allow it to drive an additional 2 monitors (and Louie has my old D3100). I don’t need this for the Linux Pi4B as it has dual HDMI outputs, and if the RISC OS Pi4B supported the 2nd HDMI, that’s what I’d be using (via a couple of 5 way HDMI switches). Obviously the DisplayLink would be useful for other RISC OS machines which only have one video output, and it also offers the possibility of driving 3 monitors (with limitations on resolutions unless using USB C) |
Dan Ellis (8978) 3 posts |
@Alan – I was tempted back by my old friends, and it was more like 15 years. RISC OS got me sucked into USB which has been very good for me in my career, and it tickles my fancy to continue my work in a now very obscure operating system which I once devoted my heart to. We do need multiple display support, but the browser support is fairly awful at the moment.. I was very proud of myself to actually get zap up and running last night! |
Dan Ellis (8978) 3 posts |
@David – the first thing that struck me was that the standard CDC NCM interface didn’t work for network connection. And of course the audio should work. But I’m concerned that the basic work under the hood may take a lot of work for little evident benefit. For a start I need to get CVS working! Any pointers welcome. |
David Pitt (3386) 1248 posts |
ROOL’s repository is now on git for which there is a cheat sheet. Currently there is no full git client for RISC OS, that is another bounty. There is a SimpleGit client for RISC OS on Packman. |
George T. Greenfield (154) 752 posts |
Amen to that! |
Steffen Huber (91) 1963 posts |
Ignore DisplayLink. We don’t even have proper two-head support for hardware that is already here (RPi 4(00)). Ignore audio and generally the isochronous mode for the moment – there has been very little interest in the community with regard to sophisticated audio stuff, mostly because of the dire situation with the RISC OS audio system in combination with non-existence of audio-related applications. Sorry to Jim Lesurf, but you are the only one flying the flag…with the possible exception of Colin and Dave of course. Concentrate on USB3 and mass storage. Tackle everything else after that (networking would be the next thing that would really benefit from USB3, but all RISC OS-relevant boards have on-board Ethernet, so not sure if it is really that important). |
Michael Drake (88) 336 posts |
I think USB Audio would be very useful for the Pi400, which doesn’t have a headphone jack. I was looking into it the other day because my monitor doesn’t have speakers. HDMI audio splitters seem to require an extra power supply, while USB headphone adapters are much cheaper, much smaller and need no external power supply. |
Rick Murray (539) 13907 posts |
A lot of them via USB… ;)
A more bullet-proof way of interfacing to keyboards and pointing devices. I have a Microsoft keyboard with a built in touch pad.
|
andym (447) 473 posts |
This. Exactly this. |
Stuart Swales (8827) 1367 posts |
Try not to discourage the OP – he has a clear interest in getting DisplayLink working well! |
Steve Pampling (1551) 8198 posts |
My view is that Dan should be doing what he enjoys and possibly adding a few other bits as convenient. The fact that a good proportion of what he wants and what others want will share common roots means a higher likelihood of everyone getting what they want. Oh, and there’s that bonus bundle of cash. |
Dave Higton (1515) 3559 posts |
I, for one, would very much like to see support for DisplayLink. I bought an early adapter some years ago, but support only got as far as Jeffrey’s demo. I have two monitors side by side here. The left one normally displays the Linux box, but there are times when I’d like to use it as more RISC OS desktop space. Isochronous mode would be good to, for audio. Everyone talks about audio output being available via HDMI, but AFAIK USB is the only viable way for audio input, as well as opening up far wider choice for output. I’d be happy to make my USB Audio control module available, with source, although I think perhaps someone else would like to start all over again with a different API. |
Clive Semmens (2335) 3276 posts |
In an inversion of that, what I’d like would be to be able to share my one large 4K monitor (actually TV) between the Pi and the Mac in a more sophisticated way. Most of the time having a 4K RISCOS desktop OR a 4K Mac desktop is perfect, but just occasionally having them side by side would be good – or having either one in a window in the other. I know I’m asking for the Moon on a stick though, and I can’t even afford to pay a small share of the cost of developing it even if there were hundreds of us who’d like it. |
David J. Ruck (33) 1649 posts |
Clive, that’s a feature of some 4K monitors, such as Samsung, but I’ve not tried it myself. |
Dave Higton (1515) 3559 posts |
The solution could be as simple as using VNC. Both directions should work. |
Clive Semmens (2335) 3276 posts |
I know – but not of my 4K Phillips TV! I don’t know whether it’s a feature of any big monitors (my TV is 43", and I’d not want a little 27" thing), nor whether such a monitor would be happy with the 24Hz screen refresh which is all the Pi3B can manage at 4K. Of course I could afford a Pi4B which can do much better – but updating my Mac (much as I’d like to) to one that can do better than 25Hz is a different matter. As would the price of the monitor be… Moon on a stick, as I said.
Not sure if that was aimed at me – should I investigate VNC? No idea what it is… |
Dave Higton (1515) 3559 posts |
Yes it was, yes you should. VNC is a protocol to control a computer from, and display its screen on, another computer. RISC OS has a good VNC server module, last updated by Jeffrey; and a good VNC client application, Avalanche. I use both to control my central heating controller, which runs headless in the airing cupboard. Any search engine is your friend! |
Clive Semmens (2335) 3276 posts |
Presumably if I got a Pi4 and connected that to the monitor at 4K resolution and 60Hz, it would be perfectly happy displaying the Mac’s 25Hz screen on its own 60Hz rendering of it? Or with my present Pi3B, the Mac at 25Hz re-rendering the Pi’s 24Hz screen? Now I’ll have to investigate VNC client and server for the Mac… |
Dave Higton (1515) 3559 posts |
The protocol is not related to the refresh rate, just what is on the screen. |
Clive Semmens (2335) 3276 posts |
I rather thought that would have to be the case – which has obvious advantages when one or the other computer has a refresh rate that the monitor (or TV) can’t handle! |
Clive Semmens (2335) 3276 posts |
https://en.wikipedia.org/wiki/Virtual_Network_Computing seems good for getting an understanding of what’s going on. Thanks Dave! |