Now watch as lots of tweaks make it even better as world wide expertise works on it.
The Raspberry Pi is now host to the “first ARM-based multimedia SoC with fully-functional, vendor-provided fully open-source drivers”, the organisation behind the credit-card sized computer said today. The little PC uses the Broadcom BCM2835 SoC and the RaspberryPi Foundation’s lead Linux developer, Alex Bradbury, praised the …
Now watch as lots of tweaks make it even better as world wide expertise works on it.
Now we can experiment with new designs of OS, rather than playing on top of 20 year old RiscOS and Linux.
The firmware still does all the heavy lifting, this just exposes things like OpenGL interfaces etc. a little more - nothing miraculous and IP-protected.
And, to be honest, we could have always experimented with new designs of OS - they just wouldn't be as accelerated as possible. That's hardly a barrier to getting them going, though.
All this really does it provide some more news coverage without actually doing anything they weren't promising from the start (such as getting proper accelerated graphics). And still relies on firmware blobs being loaded.
Basically, it brings the Pi up to the level that almost all consumer graphics cards are at the moment, yes, but nothing that wasn't going to happen anyway unless Broadcom got REALLY snotty about it.
For reference, there are just over 100 files with C code. There are 200 header files, a lot of them would be literally one-liners if it weren't for the copyright notices, includes, etc. Most of the C code is stubs.
The largest collection of actual code are the "khronos" ones, the largest file of all being glxx_client.c which seems to do nothing except pass off OpenGL calls to internal RPC calls but is 177kb of code (mostly debugging code to log each call, and then individual functions for every OpenGL function that just maybe does some minor tweaking and then calls an RPC call with almost identical parameters).
In total, there's not a lot of actual code there - certainly nothing to learn from or to tweak much - and I have to say that documentation and commenting are severely lacking. It's not even clear what half the files even DO or why they are named so, let alone the functions, variables, magic numbers, and various other things that "just work". There are a couple of TINY utilities, that are already available in binary form, to do things to the RPi like change the TV-out modes, etc. but they are literally worthless in terms of code.
Apart from that, it's all headers (undocumented) and makefiles. I'd call it closer to a code-dump of some userland interfaces that had to be at-least-GPL anyway and tiny utilities, if I'm honest, rather than an actual driver of any kind.
Well Fuck me.
Some people are NEVER satisfied.
I reckon we could provide a free Kylie Minogue with each board and Lee Dowling would still complain there were bits missing.
Unlike you Lee Dowling seems to have taken the time to review the download and make a decent stab at evaluating it for the rest of us.
Have a down vote sir.
Except that I think James Hughes knows _exactly_ what's in the download. Have a downvote yourself.
Previous poster right - I already know what in there.
In fact, Lee Dowling is correct, the drivers are in fact mostly wrappers to a set of calls made to the GPU, via the VCHIQ driver which handles the actual message passing interface to the GPU. But that wasn't the point. The point is that previously the Arm side code was closed source (libEGL, libOGLES, libVG etc), so no-one knew what the messages were to do the multitude of available operations. Now that information is published, and people can use the code to make their own userland libraries for whatever OS they want to.
So although Mr Dowling is technically correct, he is being rather miserly in his attitude - this is a BIG THING to have got a BIG COMPANY like Broadcom to spend a lot of time and money making the source available and ready to release. He is belittling the huge amount of effort expended to get to this point. - technical effort AND legal effort - by saying 'its just a wrapper' .
> Unlike you
You do know who James is, right?
There's a reason his post said "we" rather than "they"...
> this is a BIG THING
It is. Well done!
@Gordon 10 - feel the burn!
Knowledge is power. Now it should be possible to do some serious damage to the chip. Who'll be first to set their Pi on fire?
Fully functional, as long as you don't want MPEG2 or VC-1 decoding which are subject to an additional license fee...
They always are. You just usually don't get a choice to not pay for them if you don't want them (codec equivalent to the much-despised 'Microsoft Tax').
Yes, normally devices just include the cost of all the codec licenses as part of the product cost. But at £2.40 for MPEG-2 and £1.20 for VC-1, what are you complaining about? It's obvious that the organisation couldn't just bundle these with the device. Assuming they are not profiting from these licenses, it's 15% of the device cost. But even for both, £3.60 hardly breaks the bank, and puts the cost of the board for multimedia purposes at less than £30.
I'd rather have the choice. Some projects I am using the Pi for need no graphics ability, so I save £3.60 on them. Some do need it, but I still end up with a suitable board for less than £40 (inc power supply, SD card and other sundries).
The only thing that the licenses get in the way of are mass-production setups. It requires individual modification of each SD-card image. However, even this can be automated: A simple boot script could load in the appropriate license number from a central server.
the 'cool' stuff is still binary only. the rest is just wrappers AFAICT
If you look at the diagram on the RasPi site you'll see that everything up to the Videocore itself is now open source - that means all the ARM code. I think that's pretty significant myself, or do you think you are able to work on the firmware assembly code itself?
But now you can use the source code to see how to drive the cool stuff.
Do you really want to be able to change the GPU firmware? How are you going to test your changes? Do you know how much Cadence simulator licences cost? Have you got a thousand core simulator farm?
I'm not having a go but the contents of the firmware are in a file to save having to include non-volatile storage in the chip and to allow shipping the chip before all the firmware bugs are fixed.
Have you looked at that "source"? It's not. It's wrappers. There's a difference. So promoting it as having a "fully open-source driver" is a misnomer. I posted a quick analysis above but the biggest source file does nothing but shunt OpenGL commands to RPC calls with almost identical syntax.
There's no "source" here, no more than nVidia's own proprietary, binary drivers. Literally. In fact, the nVidia drivers are often larger in terms of actual source code you can see. An "open source" driver would be something like nouveau that drives cards directly, tells you exactly how it does that AND documents it along the way.
There's really nothing here that's any better than nVidia's binary driver. And nobody claims that that is "open source".
Well, I read the article and hadn't looked at the release.
So I'll stick with the recommended Linux distro for now. Raspbian “wheezy”
So the release here http://www.raspberrypi.org/archives/2221
"As of right now, all of the VideoCore driver code which runs on the ARM is available under a FOSS license (3-Clause BSD to be precise). The source is available from our new userland repository on GitHub. If you’re not familiar with the status of open source drivers on ARM SoCs this announcement may not seem like such a big deal, but it does actually mean that the BCM2835 used in the Raspberry Pi is the first ARM-based multimedia SoC with fully-functional, vendor-provided (as opposed to partial, reverse engineered) fully open-source drivers, and that Broadcom is the first vendor to open their mobile GPU drivers up in this way. We at the Raspberry Pi Foundation hope to see others follow."
OTH if it's possible now to load and use the GPU binary and call it from your own hand crafted OS off the SD card it's some good.
Well, now you can call the things you knew it already did directly, instead of calling OpenGL or the remaining interfaces. It will also be easier to implement video in other OS as it's a rogh guideline to what the fimware can do. But as they say, it's really no better than reverse engineering, right down to the magic numbers.
If you wanted to implement something that used the hardware resources of the card in some other way, like say, parallel computing using OpenCL, no luck here.
All the ARM-side code does is tell the GPU to encode/decode a particular frame of video data. What has changed is that now you can tell it to encode/decode what ever you want, but that's all. You'll never get access to the parallelism of the GPU itself.
Of course, you describe pretty much how ALL drivers for embedded firmware devices work. They are in effect simple wrappers in to the functionality provided by the hardware. If you regard the GPU as a electronic device, with an interface, then everything you need to have to drive that interface is now open source. That's what drivers do. And this is the first time this has been done for ANY SoC.
I'm not sure what your argument is here. The foundation has now released _all_ the ARM-side code as open source under one licence or another. They don't claim to have done anything else. They have released the drivers - drivers which drive the GPU firmware. That's what the ARM-side drivers do.
The GPU firmware isn't going to be open-sourced, so let it go. It's closely tied with the hardware, and would provide more detail on the workings of the hardware (which is all commercially confidential) than Broadcom is prepared to release. That's their decision, and the rantings of a few people on comment forums really isn't going to sway them - you really don't _need_ this information, however much you might like to have it for your own purposes. This has nothing to do with the Raspberry Pi foundation. It's a commercial decision by Broadcom and it really doesn't matter how much you moan about it, it isn't going to change.
Feel free to modify the provided ARM-side code to support hardware acceleration using OpenGLES, display output, tv control etc, on any OS which you choose to port. That's what releasing this code allows - nothing more, nothing less.
Somebody has done some reverse engineering on the GPU binaries.
> All the ARM-side code does is tell the GPU to encode/decode a particular frame of video data.
Errr - what did you expect from a GPU?
"All the ARM-side code does is tell the GPU to encode/decode a particular frame of video data."
In other words, it is a driver. A piece of code which abstracts an interface between the "computer" and some hardware.
I wonder if any of this will be of use to the people trying to turn the Roku boxes into something useful?
Background: The Roku boxes use the exact same SoC as the Pi, but the firmware is, shall we say, somewhat limiting: you can stream video from Roku, you can stream games from Roku, you can stream music from Roku, but you MUST have an account with Roku, and you CANNOT stream anything from a local UPnP server (unless you want to buy the Roku UPnP app). IMHO, the Roku boxes are next to useless compared to a Patriot Box Office or any other UPnP/DLNA capable device.
There are some rumblings of people trying to make replacement firmware for the Roku that might turn it into something that can stand alone, but there are issues with support. I wonder if this code will help those efforts along.
Aren't Roku boxes also heavily subsidized, like $60 versus the regular $199 UPnP streamers go for?
If Roku cannot sell their hardware at a profit without tacking on the service charges, then they shouldn't *sell* it at all - offer the service, and as a part of the service you get the box.
They don't make it very plain at all that the box is TOABH(*) without the service, which is just about 10 Planck lengths on the legal side of false advertising.
Just at the Netpliance I-opener, and the CueCat, and all the other failed business models, I am under no legal obligation to support a stupid business model.
(*)Tits On A Boar Hog
I'm not sure why you'd start with a Roku box if you don't want the Roku UI?
You'd have to hack the firmware (non-trivial as it's probably encrypted) and then write drivers for the various bits of hw on the box (wifi/bluetooth - may be relatively straightforward - standard linux drivers may be available, I'm not sure). And then you'd have something with the functionality of a Raspberry Pi. Why not start with a Raspberry Pi and make life simpler?
And there are various options for media streaming to a Roku - I use Roksbox which works very well and will stream from anything running any web server. $10 I think - but there are other options - even some free ones if you're streaming from a Windows PC.
"Why not start with a Raspberry Pi and make life simpler?"
Sure thing...if you can tell me where I can go to get my hands on a Pi kit out the door today? All the mail-order sites are on indefinite backorder. Roku boxes are in Walmart and Best Buy, among other places. That said, I've avoided them because I know they don't do DLNA. About the only thing close to being viable is the WD TV, and even that interface stinks. Meanwhile, the port of XBMC to Pi is progressing nicely.
For the lulz.
> I'm not sure why you'd start with a Roku box if you don't want the Roku UI?
A Roku comes ready to use. It has a case and a power supply and a remote.
A PI does not.
"In stock orders placed before 7pm are dispatched the same day" Oh look, the Pi has green 'in stock' ticks all over it... http://cpc.farnell.com/jsp/bespoke/bespoke2.jsp?bespokepage=cpc/en_CC/special_offers/bargains/part_detail/RPi_lp2.jsp&CMP=HP_RPi
This comes from someone who placed an order with RS 5 months ago and finally had his dispatched the day before the announcement that all of the model B's memory would be doubled, even for pending back-orders.
Having watched me play with it for less than week, the wife ordered from the above site yesterday (after 7pm) I'm sure just to wind me up. We're expecting it tomorrow.
And it's arrived. Let the gloating commence.
The VCHIQ "driver" code is in a folder called "userland" and appears to just do open and ioctl calls. It doesn't *look* like a Linux kernel driver. Where is the kernel driver code for VCHIQ which accepts the ioctls and passes them to the hardware (probably after some virtual-to-physical mapping)? Is this just a bad link from El Reg to /userland? The Rasp Pi site says "ALL USERLAND CODE NOW OPEN SOURCE" and then proceeds to talk about driver code too, and does claim that all ARM code is now open. So where's this driver?
PS: I get the feeling from comments on the Pi site that the reason you're not seeing anything like "this register does this operation in the hardware" is that the GPU contains the implementation of Open GL, so the hardware interface really does look just like the software interface, and wrappers is all there is. But the kernel VCHIQ driver code will probably illuminate this.
" Where is the kernel driver code for VCHIQ which accepts the ioctls and passes them to the hardware"
I should also add that the kernel has been open source since the start, so that's not a new development.
Soon shall we be able to move this hobby machine into the real world with a proper OS - Windows Millenium Pi Edition!
Hopefully we'll get accelerated X then?
Looking at the Raspberry Pi blog makes me feel sad.. it looked like a good idea of giving cheap computers to kids and it's basically turned into cheap computers for "makers" or other people that would have bought an Arduino. Which isn't bad.. but those people do seem to be prepared whatever swallow whatever Liz writes and attack the few people that have a clue that are calling them out on these "drivers". I'm sure the Raspberry Pi's guy on the register will be along to down vote and make snide replies to any not so positive comments here soon enough too.
Why does providing a cheap as chips device that can be used for teach AND other stuff make you sad? The teaching side has NOT been forgotten. And this announcement IS a big thing (it's not just the code, but the philosophy), please read up on it. It's not just a matter of 'having a clue', although I've noted that although some of the commenters may have a clue, they certainly don't have any manners.
Watch out, he'll call you a "concern troll" and report you.
The idea turned into a load of hyped up bullshit.
Nothing that the Raspberry Pi foundation has done so far has been done particularly well, from the farce and hype regarding pre-orders, to overhyping the 'open sourcing' of SoC code.
The fact is, the SoC is still closed. It still requires a binary blob which runs on the proprietary Opencore GPU even to boot the damn thing. And the fact is, all they have released with this little bit of code they have chucked over the wall is a shim, nothing more because the fun is in the firmware, which is still proprietary.
Don't get me wrong, I have no objection to proprietary code at all, but don't boast about open sourcing something which really isn't. It's just a publicity game for Broadcom and the Pi foundation which will hopefully backfire on the bastards.
>Why does providing a cheap as chips device that can be used for teach AND other stuff make you sad?
The people that have so far bought a Pi could have bought a BeagleBone.. no one that has a Raspberry Pi at this moment couldn't have got a Linux machine that performs better for the money.
>I've noted that although some of the commenters may have a clue, they certainly don't have any manners.
The press release was overcooked and some people called them out the bullshit.. so Liz and Eben got all butthurt instead of addressing the actual issue. If they want people to be all nicey nicey they shouldn't write complete bollocks and expect not to be called out on it.
But a Beaglebone is about £60 as far as I can tell. I can get 2 Pis for that. Also, what is the capability of the GPU in the Beaglebone (I can't see any reference to one from a quick google). Can it play 1080p video? I'm missing the bit where this is better performing and lower/same priced.
FWIW I partially agree about the overcooked announcement - in particular the part where the suggest that other vendors should follow suit, since there is still a large binary blob (though not of ARM code). However, I don't think what has been achieved should be underestimated, even if it doesn't go as far as people might like.
In the UK you'd go to a Maplin store with stock if you wanted one *today*, as part of a complete £70 starter kit rather than as a £25+VAT+shipping item needing various parts adding from your spare parts bin. Not available today to mail order (stock due in 10 days), and the "check store stock" website doesn't work for me. Part code R45PI, obviously ;)
In the UK you could mail-order from (one of) the two manufacturing partners, RS and Farnell, one of whose order-to-delivery turnround is reliably less than a week, and one of whose isn't always (yet).
In other countries, you may have to deal with different distributors with different availability.
I haven't got one yet, though I know people that have, and I know I could get one if I had time on my hands and a decent excuse to get one (it'll come).
Eben Upton's excellent talk to the IET Young Professionals (find link via http://www.raspberrypi.org/archives/2210) is well worth an hour and a half of your time (treat it as a radio programme, very little Powerpoint). It's even great for those who seem to think the educational focus has got lost. It hasn't got lost, it's just not "moving on Internet time".
Thank you Eben and team. Keep it up.
> In the UK you'd go to a Maplin store with stock if you wanted one *today*, as part of a complete £70 starter kit
You can pop in and order a kit but my local Maplin store doesn't carry them as stock items; they'll only be shipped to the store when ordered.
So, who will tell Theo that OpenBSD can not be ported to the Pi. If there is a so much as a fullstop out of place, Theo will be the chap to moan about it :o).
I just feel a little bit sorry for the people who busted alot of hours reverse engineering the parts we couldn't reach. So my thoughts are with them in there hour of uneed.
Must admit ChromeOS on one of these may be handy as a cheap old folk gift down the line now.
I'm still going to wait until the new year though, let Maplins get some solid stock levels and flush out those 256mb models that seem to be out there still in stores lucky enough to have anything.
fscked by SHA-1 collision? Not so fast, says Linus Torvalds