[HN Gopher] LibreRPi - open source replacements for RPi firmware
       ___________________________________________________________________
        
       LibreRPi - open source replacements for RPi firmware
        
       Author : pabs3
       Score  : 274 points
       Date   : 2022-09-15 07:00 UTC (16 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | RobotToaster wrote:
       | I guess this begs the question, are there any RPi
       | alternatives/equivalents that use an open source firmware by
       | default?
        
         | tpxl wrote:
         | The Pine64 guys are working towards that goal I think. You can
         | flash open source firmware on some of their boards, but I don't
         | know if it's the default.
        
           | [deleted]
        
         | kevin_thibedeau wrote:
         | Beaglebone
        
         | egwynn wrote:
         | I'm not an expert, but iirc banana-pi and beagleboard are SBCs
         | with more of an open source bent.
        
         | megous wrote:
         | Pretty much all Allwinner based SoCs used in common SBCs have
         | FOSS firmware. Some older Rochcip SoCs also do, but you have to
         | be careful there (the most open/fully featured is RK3399). That
         | covers a huge amount of SBCs out there. Some even have multiple
         | alternatives for FOSS firmware.
         | 
         | If anything RPi seems like an outlier. Out of 9 different SBCs
         | models I have at home only Rpi2b and Quartz64-A have
         | proprietary firmware.
        
         | marcodiego wrote:
         | Some RK3399 boards can be used AFAIK entirely blob free. This
         | has been true for a few years actually:
         | https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-...
        
       | pabs3 wrote:
       | A post about the status of this project from earlier this year:
       | 
       | https://gwolf.org/2022/04/how-is-the-free-firmware-for-the-r...
       | https://news.ycombinator.com/item?id=31000725
        
         | xani_ wrote:
         | Huh, didn't knew rPi foundation purposefully added DRM to their
         | products...WTF ?
        
       | pabs3 wrote:
       | I encourage anyone who is interested in free boot/other firmware
       | for the RPi to get involved in the project, it is mostly one
       | person at the moment (not me).
        
       | grokx wrote:
       | They should have called it "LiberPi"! :)
        
       | pabs3 wrote:
       | The most recent work for this project is in the lk-overlay repo,
       | which is an overlay of the Little Kernel embedded OS project:
       | 
       | https://github.com/librerpi/lk-overlay
        
       | actionfromafar wrote:
       | This project focuses on being a drop in replacement to the
       | proprietary firmware needed to bringup Linux on the other
       | processor. (The ARM processor.)
       | 
       | Isn't anyone going to talk about running random stuff on the VPU
       | itself?! Given it's the thing used for 3D and stuff, I imagine
       | it's going to be crazy fast at certain computations, much faster
       | than the ARM is.
       | 
       | Untapped potential of all Raspberry Pies out there... maybe the
       | VPU can be (ab)used to do stuff similar to what the Raspberry
       | Pico can do.
        
         | cleverca22 wrote:
         | yep, thats why ive been focusing a lot on porting linux drivers
         | over to little-kernel on the vpu, and getting things working
         | without linux
         | 
         | https://www.youtube.com/watch?v=l7lIewA9fm4 is an example of a
         | VPU accelerated mandelbrot, without the arm core even being
         | turned on
         | 
         | for (int i=0; i<16; i++) { int temp = a[i] * b[i]; if (store)
         | c[i] = temp; if (accumulate) accumulator[i] += temp; }
         | 
         | basically, the VPU can run this entire line of code in just 2
         | clock cycles, and this isnt even the 3d core, which is entirely
         | seperate and more complex
        
       | marcodiego wrote:
       | I thought this project was dead. It is good to see some progress
       | on this.
        
       | mmastrac wrote:
       | I really hope they can get HDMI up on this because I'm struggling
       | with an incompatibility between my IP KVM and Raspberry Pis. I
       | would really love to dig into the HDMI initialization code.
       | 
       | Something about the HDMI output on a Pi is just absolutely
       | incompatible with the IP KVM's interface modules and it's
       | maddeningly subtle because the Pis work _everywhere_ else.
        
       | ggm wrote:
       | A probably naieve question. If the VPU can be used as the
       | bootstrap loader for the CPU, much as a PDP11 on the door of the
       | Vax 11/780 acted as bootstrap loader for the Vax, can we not
       | simply replace _all_ the complex VPU resident functions with
       | 'just run on the CPU' and then resolve the external device
       | bindings in normal CPU code?
       | 
       | Maybe I misread it, but it read like the VPU does more than the
       | tiny necessary bootstrap to find an image, and chain load it. It
       | reads like it has to do some timing critical initialisations of
       | subsystems, but I cannot but think a CPU should be able to do
       | this for itself, once it has some run state with a kernel in
       | memory.
       | 
       | It's as if the VPU has to make the other bits of blobby hardware
       | be alive, for the CPU to be able to see them. Most odd.
       | 
       | Oftentimes there are magic bits of this to do with ring states,
       | and priviledge to alter ring at runtime. Maybe this is part of
       | the story: the VPU initialises a specific ring state and some
       | outer higher trust ring MUST be pre-initialised for the CPU ring
       | state to be allowed to talk to it: it would violate the ring
       | model, if the CPU did it.
        
         | pjc50 wrote:
         | I'm not aware of the specific details, but one of the usual
         | critical things is clock and PLL configuration. It looks like
         | the PLLs that generate all the internal clock frequencies,
         | including the 48MHz for USB, are connected to the VPU. It may
         | be the case that relevant hardware simply isn't connected to
         | the ARM.
         | 
         | (From Broadcom's point of view, the VPU is the "real" computer
         | with all the processing power, and the ARM is tacked on the
         | side)
        
           | ggm wrote:
           | This is so true, and so amusing. It almost makes me wonder if
           | the microinstructions of the VPU could be where we run.. and
           | use this ARM chip to do things like AES offload!
           | 
           | Thanks for a very useful observation. Clocking is fundamental
           | to a lot of things, buses like the clock to be done right so
           | I can believe booting requires good clocking and some bus
           | initialisation.
        
             | pjc50 wrote:
             | Turns out there is some pretty good architecture
             | documentation: https://docs.broadcom.com/doc/12358545 ..
             | but that only describes the 3D capabilities, not the whole
             | register map.
        
               | monocasa wrote:
               | That doesn't really cover the processor under discussion
               | here, only the shader cores called the QPUs.
               | 
               | This work and the processor under discussion is another
               | core called the VPU that unfortunately gets confused
               | because with the default firmware it runs the majority of
               | the OpenGL driver stack, controlling the QPUs.
        
               | q-big wrote:
               | > Turns out there is some pretty good architecture
               | documentation: https://docs.broadcom.com/doc/12358545 ..
               | but that only describes the 3D capabilities, not the
               | whole register map.
               | 
               | This documentation is for the VideoCore IV. The BCM2711
               | SOC that is used in the Raspberry Pi 4 has a VideoCore
               | VI.
        
         | xani_ wrote:
         | IIRC it was just architecture quirk of those chips as initally
         | they were designed as basically fancy accelerators to be used
         | with already existing systems
         | 
         | > VideoCore chips can run complete applications - they are not
         | simply video DSP chips that require a separate processor to
         | supply and collect data. In practice though, they are often
         | used like simple accelerators, as companies usually prefer to
         | cautiously assimilate new technology rather than take a big
         | risk in porting a large amount of application code from an
         | existing ARM-based design.
         | 
         | For example one of earlier ones was used as GPU for Nokia N8
        
         | cleverca22 wrote:
         | some peripherals like the dram controller are rigged up so the
         | arm can never control them
         | 
         | others like the 2d core default to the same mode, but can be
         | re-configured to allow the arm to control it
         | 
         | there may be more peripherals that behave the same way, and
         | require code on the VPU to help out
         | 
         | and like others said, changing the arm freq, from the arm core,
         | could be dangerous, it may just lock up, because it turned its
         | own clock off
        
         | nerdponx wrote:
         | Fun fact, the "i" in "naive" is not an umlaut, but a totally
         | different use of the same notation called a _diaresis_! It 's
         | meant to inform the reader that the "a" and "i" are pronounced
         | separately, rather than being combined into a single vowel
         | sound. It's a bit old-fashioned in English, but you sometimes
         | will see it in older texts on words like "cooperation". So
         | "naieve" is not a valid spelling of "naive" (but that's okay
         | because English spelling has historically been a mess and
         | everyone knew what you meant).
         | https://en.m.wikipedia.org/wiki/Diaeresis_(diacritic)
        
           | acadapter wrote:
           | How cooperative of you to help out with spreading the
           | knowledge
        
           | Koshkin wrote:
           | > _diaresis_
           | 
           | It's _diaeresis_. (Not sure if 'ae' can be replaced by the
           | umlaut here.)
        
             | 867-5309 wrote:
             | in British English. the former perhaps intended the variant
             | (or American) _dieresis_
             | 
             | still, neither are _diuresis_ , which nobody wants
        
               | lifeisstillgood wrote:
               | Just as there was a "slashdot effect", I think we should
               | apply for an "HN Tangent" - the effects being something
               | like whiplash to the brain as the discussion veers off in
               | directions undreamt of.
               | 
               | Thank you for enlightening me.
        
             | fnord123 wrote:
             | It's not a but ae like in encyclopaedia and archaeology.
             | British English generally simplified to ae. American
             | English generally simplified to e. Wikipedia page has more
             | info: https://en.wikipedia.org/wiki/%C3%86
             | 
             | If diaeresis is too hard a word to deal with, we can just
             | call it trema.
        
           | numeromancer wrote:
           | I refuse to co-operate with those who use diaresis to
           | separate vowels.
        
           | TacticalCoder wrote:
           | Fun fact: since a relatively recent reform the position of
           | the diaeresis (in french: "trema") kinda changed (at least
           | for quite a few words). For example in the word "aigue", the
           | diacritic sign can be put either on the 'e' (as used to be
           | the case previously) or the 'u' (which is now recommended but
           | not mandatory: you can still put it on the 'e' instead). So
           | both _" aigue"_ and _" aigue"_ are correct AFAICT.
           | 
           | Although I'm a native french speaker TIL, thanks to you, that
           | it's role was to inform that the letters are to be pronounced
           | separately.
        
           | BrandoElFollito wrote:
           | TIL that "cooperation" is an actual word.
           | 
           | The diaeresis is very important in French (we call it _trema_
           | ). Without this the word _naive_ instead of  "na-iv" would
           | sound "nev". The first name _Loic_ instead of  "lo-ik" would
           | be "looak" (it is even hard to say it loud for me). And many
           | others.
           | 
           | Fortunately we still have the word for _waters_ which is
           | _eaux_ and that we pronounce  "o"
        
             | wongarsu wrote:
             | It's important in French because French tries very hard to
             | have a consistent mapping between spelling and
             | pronunciation. When you read a word you don't know, the
             | spelling tells you how to pronounce it. English seems to
             | have largely given up on this concept.
        
               | BrandoElFollito wrote:
               | Your comment got me thinking, this concept is not obvious
               | for a native French speaker.
               | 
               | So we have several words that are pronounced
               | "unexpectedly" (What You Read Is Not What You Pronounce).
               | An example would be the name if the physicist _Louis de
               | Broglie_ , pronounced [d@bRoj]. OK, that's a family name
               | so there is some history behind.
               | 
               | Then we have words that different people pronounce
               | differently: _ananas_ (pineapple) - some pronounce the
               | "s", some do not. Or the village _Avoriaz_ , same but for
               | the "z". Or _Chamonix_.
               | 
               | But now that I think about this, what you are saying is
               | indeed a thing. My wife's primary languages do not
               | include French and she did not have, I think, major
               | issues when choosing a pronunciation (she had Himalayas
               | of other problems, though).
        
               | toast0 wrote:
               | > Then we have words that different people pronounce
               | differently: ananas (pineapple) - some pronounce the "s",
               | some do not. Or the village Avoriaz, same but for the
               | "z". Or Chamonix.
               | 
               | As someone who is only fluent in English but tried to
               | study French for a couple weeks before visting Paris many
               | years ago... Spoken French has institutionalized
               | mumbling; what I read is you're supposed to form the
               | final consonants of words with your mouth, but not voice
               | them... Which ends up in practice with the consonants
               | being pretty much voiced if the next word starts with a
               | vowel and not if not... But I'm not surprised there's
               | some variance.
               | 
               | The best written reference I could find (which sadly, I
               | can't find again) was from a Hong Kong university where
               | the writers seemed to have learned both English and
               | French analytically rather than natively, so they would
               | explain the rule for French and compare with the rule(s)
               | for English and expose me to the rules I unconciously
               | followed without knowing they existed.
               | 
               | Studying written and spoken French simultaneously was
               | pretty helpful for me, otherwise it was too hard to fill
               | in the ending letters of many words as needed.
        
               | nerdponx wrote:
               | Interestingly, _all_ of the Romance languages exhibited
               | consonant-dropping in their development. In Spanish and
               | Italian for example, the Latin ending -us became -o. And
               | even as far back as classical Latin, it is believed that
               | the  "m" at the end of a word was often nasalized.
               | Apparently this hasn't been a thing for millennia.
        
               | occamrazor wrote:
               | There are other examples that are much worse for French
               | learners! In _fils_ (son) the _l_ is mute, but the _s_ is
               | pronounced. In _aout_ (August), tha _a_ is mute. In
               | _tous_ (all, plural) the _s_ can be mute or not,
               | depending on the sentence. And in _oeuf_ (egg) the f is
               | pronounced, but in the plural _oeufs_ it isn't! A special
               | mention to _Monsieur_ (Mister), which is pronounced as if
               | it was written _Messieur_.
        
           | Karsteski wrote:
           | This is a surprisingly fun fact
        
           | tomcam wrote:
           | I just had diaresis. Painful at my age.
        
             | boredemployee wrote:
             | You should check your vitamin D levels
        
               | tomcam wrote:
               | Username checks out gloriously for assisting with my
               | drastic medical condition
        
               | boredemployee wrote:
               | lol we should unite
        
             | Inhibit wrote:
             | More fiber and less umlauts for breakfast 'll fix that.
        
               | benj111 wrote:
               | An Oxford comma a day keeps the diaresis at bay.
        
               | tomcam wrote:
               | Lol thanks, whippersnappers. I'll try these totally legit
               | treatments for my totally legit disorder
        
           | mytailorisrich wrote:
           | Well, it's especially because it's a French word.
        
           | lofatdairy wrote:
           | >It's a bit old-fashioned in English, but you sometimes will
           | see it in older texts on words like "cooperation".
           | 
           | You don't even need to search for older texts! The New Yorker
           | actually uses the diaresis in their print edition. It's
           | certainly a bit anachronistic, but I do think English
           | spelling can be a bit obtuse to say the least, so the
           | orthographic hint can sometimes be useful.
           | 
           | https://www.newyorker.com/culture/culture-desk/the-curse-
           | of-...
           | 
           | https://www.arrantpedantry.com/2020/03/24/umlauts-
           | diaereses-...
        
         | mburee wrote:
         | https://github.com/librerpi/rpi-open-firmware
         | 
         | The paragraph 'Does it boot Linux' should answer your questions
        
           | ggm wrote:
           | Well no. It says:                 Yes, with some conditions.
           | You can boot a very minimal version of Linux without the
           | firmware and get it to work with UART and eMMC. Support for
           | USB, DMA, and Ethernet are in the works, which will be
           | sufficient for certain headless systems. Still, many other
           | peripherals require bringup, such as video. Additionally,
           | drivers for power management need to written.
           | 
           | So it isn't clear if this is code in the kernel, or code
           | blobs still to be run in the VPU, and why.
           | 
           | "drivers" could refer to linux kernel, or the drivers as blob
           | downloads, or VPU initialization.
        
             | pabs3 wrote:
             | This is separate code (a fork of the Little Kernel project)
             | that runs on the VPU and loads later stages of the boot
             | process, including initialising the ARM core and running
             | the Linux kernel on it.
             | 
             | https://github.com/librerpi/lk-overlay
             | 
             | Edit: The rpi-firmware repo has been replaced by the lk-
             | overlay repo, which is much more flexible.
        
       | Thoreandan wrote:
       | So fully-functional blob-free RPi3 / RPi4 is a thing now?
        
       ___________________________________________________________________
       (page generated 2022-09-15 23:02 UTC)