I have a Raspberrypi (is fabulous) and I'm loving the free software and wonder if the Raspberrypi is a project by and for education, is it open hardware? if not, why hardware is not open specifications?

I can't find anything about whether its open hardware in the FAQ, but maybe I'm missing it.

Short answer - sort of, everything except the GPU. (don't ask)

These entries in the FAQ.

What hardware documentation will be available?

Broadcom don’t release a full datasheet for the BCM2835, which is the chip at the heart of the Raspberry Pi. We will release a datasheet for the SoC which will cover the hardware exposed on the Raspi board e.g. the GPIOs. We will also release a board schematic later on.

But I want documentation for <hardware X>!

Other documentation may be released in future but this will be at the Foundation’s discretion.

But I demand the documentation for the chip. Give it to me!

To get the full SoC documentation you would need to sign an NDA with Broadcom, who make the chip and sell it to us. But you would also need to provide a business model and estimate of how many chips you are going to sell.

If you want to build the ARM processor that drives it, the CPU/chip design is not available and you are going to have to pay ARM holdings to get it. No doubt under NDA so you don't share it with anyone else.

If you want to build the chip that the ARM processor lives in. The System On a Chip or SOC, you are going to have to talk to Broadcom who make it. I don't think they will be wanting to share the design of the GPU with you.

If you want to build the board that these chips are mounted on, I suspect the design may be available. I have not checked. However having that will do you no good if you cannot by the the Broadcom ARM Soc to mount on it, which you cannot.

Hi everyone, thanks for the answers ... My question arises that as a project by and for education, the student should have the opportunity to study as it was built towards being able to learn and adapt.

I for now I have the knowledge to adapt but if I would like to do it later and also because it would be something different in the world of hardware environment when everything is restricted and patented.

Distopico Vegan wrote:Hi everyone, thanks for the answers ... My question arises that as a project by and for education, the student should have the opportunity to study as it was built towards being able to learn and adapt.

I for now I have the knowledge to adapt but if I would like to do it later and also because it would be something different in the world of hardware environment when everything is restricted and patented.

I disagree. Buy your argument, the Raspi is useless because it doesn't teach you about the internal combustion engine. I simply don't see the need for the hardware to be open for it to be a useful educational tool. Admittedly aimed more at the software side of things, but then, that's why the Raspi was born in the first place, to help teach the programming of computers, rather than just the use of computers. Knowing about the GPU et al doesn't really help there. There is certainly enough information available to teach from low level baremetal programming to more advanced GUI programming. Which is pretty much the same as when I learnt on a BBC micro all those years ago.

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Distopico Vegan wrote:My question arises that as a project by and for education, the student should have the opportunity to study as it was built towards being able to learn and adapt.

Take the nice GPU capabilities as a bonus. The Pi could live without it and its internals likely aren't of much interest to more than some handful of highly specialized engineers. What's nice about it is that the chip has a nigh on native OpenGL ES interface, i.e. there's only a very thin layer of glue (open source by now) between your application and the chip. I think that's the route things go.

And if you want to know how that chip works, read some books about computer graphics. The math is already complex enough, let aside implementation specific tricks, which belong to Broadcoms IP and surely won't be given away for free.

The Raspberry Pi is a very simple device; it only has two ICs* plus a handful of voltage regulators and passive components. It doesn't have anything interesting to teach regarding hardware design. (Unless your pupils are concerned with EMC decoupling and thermal design, maybe.) Nevertheless, the schematics are available. The PCB design is not published. However, it is built on a six layer board, which means that whatever signal you want to find, it is probably buried on one of the internal layers. It would be impossible for anyone to build fewer than 10,000 Raspberry Pi computers, because the chips are not available in such quantities. So it probably would not help to have any more data published than is available now.

On the other hand, there are copious data published on the signals that are available and the register-level programming to use them. There are probably no signals available anywhere on the board that are not documented.

If you want to learn about how a processor works, program one in an FPGA chip. Starterkits are available from several manufacturers, the underlying programming language is pretty much standardised. But it's not "open"....

Once you get down to the chips nothing is open. This is no more or less true for the Pi than it is for the Arduino which always held up as an example of "open hardware".

The schematic of the Raspberry Pi board is probably not much use to anyone. You can't make one without the chips and you can't get the chips. There is probably not much useful to be learned from the schematics. As for modifying the board I'm pretty sure that's not a realistic possibility.

So what to do:

1) If one want's to learn or teach electronics there are many other places to start.
2) If one want's to learn or teach how to put computers together from chips or a bit of computer architecture there is nothing like getting back to the old 8 bit Z80 devices and such.
3) For embedded designs with MCU and sensors and such I would look into the Propeller MCU from Parallax Inc. A great little 32 bit machine with 8 cores and 32 I/O pins available in a bread board friendly 40 pin DIP package. Parallax has a lot of educational material surrounding it.

Agreed. Some people seem to this that the aim of the Rapsi is to teach electronics as well as computing and software. I don't really think that a sensible concept. There are much better devices if you want to learn electronics. As to learning chip intricacies, that's pretty advanced stuff, and again, a bit outside the remit of the Rapsi itself.

So, the Raspi is open enough for it's major demographic, and tbh, is probably more open than the vast majority of people need anyway.

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Heater wrote:This is no more or less true for the Pi than it is for the Arduino which always held up as an example of "open hardware".

Its very easy to make an Arduino, the chips are easy to buy in single quantity and the board can be knocked up on a piece of stripboard easily and cheaply. (I've built about a dozen). The chip itself is very simple, being an 8 bit processor with a couple of kilobytes of ram and 16 kilobytes of flash storage. The datasheet is freely available and fully documents what goes on on the inside.

Nothing whatever like the Raspberry Pi.

Don't judge Linux by the Pi.......
I must not tread on too many sacred cows......

"Once you get down to the chips nothing is open. This is no more or less true for the Pi than it is for the Arduino which always held up as an example of "open hardware"".

The design of the AVR chip on the Arduino is not open at all. The "open" part of the Arduino necessarily starts outside it's AVR chip. Similarly the design of the chips used in the Pi are not open to inspection.

Yes, an Arduino is dead easy to make. That does not change what I said about the chips.

There is a 205 page datasheet on some parts of the BCM2835 SoC used in the R-Pi. Details on the GPU structure, and many low-level things are not available, but higher-level stuff of practical use for building R-Pi projects is found on the wiki page http://elinux.org/RPi_Hub

The Raspberry Pi requires nonfree software to start up. It can't reach the point of executing free software unless this nonfree program is part of the installed system software.

The startup program is, in fact, the same program that runs the GPU and the video decoding hardware. Thus, the GPU and the video decoding hardware are unusable in the free world, but these jobs can be done with free software on the CPU.

That program appears to implement intentional restrictions, such as blocking the video decoding hardware for MPEG-2 and VC-1 in the absence of a key that is specific to the machine in hand.

The Raspberry Pi requires nonfree software to start up. It can't reach the point of executing free software unless this nonfree program is part of the installed system software.

The startup program is, in fact, the same program that runs the GPU and the video decoding hardware. Thus, the GPU and the video decoding hardware are unusable in the free world, but these jobs can be done with free software on the CPU.

That program appears to implement intentional restrictions, such as blocking the video decoding hardware for MPEG-2 and VC-1 in the absence of a key that is specific to the machine in hand.

I don't believe there is anything techn ically incorrect in that FSF statement. It's rather misleading in that is it legally impossible to provide MPEG-2 and VC-1 codecs without paying for them, hence the need for the key system, but otherwise seems valid.

Of course, that's the FSF's definiton of free. Many people have different opinions. For example, it would be entirely possible to make the Raspi adhere to the FSF definition of free by permanently fixing the bootcode and GPU, rather than it being upgradable. So you would end up with a system that simply isn't as good as the current one, just to make it FSF compliant. That, in my opinion, makes it less 'free', as I am not 'free' to upgrade the software on it to the latest version.

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Exactly, if you are really in strict compliance to free software ideals you would never be running your Linux operating system on any PC or laptop or whatever that has a closed source proprietary BIOS to boot the thing up.

I fail to see how the Raspi's firmware is any different.

Of course, you would also reject use of all that software that exists in you hard disk drive's controller, or you network adapter, or your USB adapters or even your mouse and keyboard.

Oh and by the way, your Intel CPU probably has upgradeable microcode which is closed source.

And if you wish to learn Chip design start with the OpenCores stuff and doing it in an HDL, then move forware to doing some VLSI layout using ElectricVLSI (available in the packages for Raspbian) and simulating the low level operation with SPiCE.

Or alternately you can start by making a TTL CPU (this is the way I went, back in the lat 1980's), many tutorials are available on this topic. And then move on to VLSI layout using Electric VLSI.

For GPU design there is a lot to consider. Though the math is a lot easier than people make it out to be. Yes the math is significant, though 99% is just matrix transforms for the 3d side, and for the 2d side it is a good bit simpler than that. Someday it may be possible to do HW accelleration of true RayTracing, then the math is even simpler, and if you use the scalar processors in the VideoCore, combined with the Vector Processor, then you can speed up Raytracing a bit. Though remember that if you are using portions of the VideoCore processor you will not be able to use the RPis video output, as the means of pushing vedio out is not documented anywhere yet.

The Raspberry Pi is an ARM computer, that runs many Operating Systems, including Linux, RISC OS, BSD, Pi64, CP/M as well as many more.
Soon to add AROS to the list of operating systems.

DavidS wrote:For GPU design there is a lot to consider. Though the math is a lot easier than people make it out to be. Yes the math is significant, though 99% is just matrix transforms for the 3d side, and for the 2d side it is a good bit simpler than that. Someday it may be possible to do HW accelleration of true RayTracing, then the math is even simpler, and if you use the scalar processors in the VideoCore, combined with the Vector Processor, then you can speed up Raytracing a bit. Though remember that if you are using portions of the VideoCore processor you will not be able to use the RPis video output, as the means of pushing vedio out is not documented anywhere yet.

Maths isn't too bad - matrices, FFT's, PWL mostly. Algorithms actually are where a lot of complication lies, and the sheer quantity of code required to implement something like OpenGL. And of course performance is key, and at low power, which is where the real complication comes in. When you are writing combination scaler and vector code over a couple of cores, with work offloaded to HW blocks, or to further multipurpose cores (Called Quads - 16 of them in a VC4 IIRC, very nasty things to program), in order to reduce power consumption and get as much performance as possible, then things get very very complicated.

Building a GPU is a difficult task. Building one as good as the VC4 is a HUGELY difficult task.

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

And after years of making it all work, someone will come along and demand you publish every detail of each of those mechanisms, to make it "open", so making it pretty difficult to earn a living from it in the future.

Is any current hardware platform "open"? (Arduino are said to be open, but I think if you try and produce your own copies of the AVR chips you will probably be in hot water.)

Ravenous wrote:And after years of making it all work, someone will come along and demand you publish every detail of each of those mechanisms, to make it "open", so making it pretty difficult to earn a living from it in the future.

Yup.

Actually you would go bust pretty quickly since the cost of the development would be amortised over the life of the product, and if the product is open from the launch, you will probably not recoup costs, which means no money to spend on the next version, which means no further development. And since the cost to do this stuff is so high, its cannot be done in the open (otherwise loads of people would be doing it already), so development, as a whole stops dead. And no-one - no-one - thinks of the children - who would have to live with slow old CPU's and GPU's for ever and ever. My personal opinion of course, other opinions are available.

Ravenous wrote:Is any current hardware platform "open"? (Arduino are said to be open, but I think if you try and produce your own copies of the AVR chips you will probably be in hot water.)

Yup.

Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."