OpenPOWER Foundation announces LibreBMC, a POWER-based, fully open-source BMC
openpowerfoundation.org
openpowerfoundation.org
https://en.wikipedia.org/wiki/Open_Firmware
If you look at one of the earlier x-series servers- x3650-M1 I think, the BMC (IBM calls it an IMM) is daughter board with a PPC 405 chip. The artwork has "Proudly made in North Carolina" with a map of North Carolina in etch. You can just see it in the picture, under the "IBM":
https://admirestore.top/other/ibm-x3650-rsa-telecharger-pilo...
Anyway, I wonder if the code is related. I would have thought this all went to Lenovo.
What you really need for an open-source BMC, is one that works with the common Aspeed KVM chips (ARM-based I think, look at AST2300 and above). This would have the nice effect of avoiding having to pay AMI for their BMC code.
Edit: Actually here is the code, it supports Apseed:
https://github.com/openbmc/openbmc
What's new in LibreBMC is the hardware toolchain. Frankly, they should target RISC-V for this. Edit again: it does, using LiteX:
https://github.com/enjoy-digital/litex
I'm not sure where Power fits in..
What I really need from a BMC is properly-working and secure IPMI. I don't admin them, so I don't know how how the implementation on the AC922s I use holds up, but I've only had poor experience with proprietary BMC software in the past, and there's considerable appeal to being able to fix it.
Why should POWER systems use RISC-V rather than their own free cores?
Ended up going with buildroot instead at the time...
Wish Nix were more popular building embedded system images, the tooling is capable of doing everything bitbake and yocto do, with far saner usage.
The press release says they're planning to use openbmc. The "LibreBMC" part seems to be about an open HW platform (incl. created with FOSS tools) for running openbmc.
Or are you saying openbmc is planning on some major refactoring?
Out of curiosity, what were the issues you had with OpenBMC's serial communication?
I also had a lot of trouble getting the thing to honor the most basic settings, like baud rate. But it is harder to confidently place the blame on that one. Is it OpenBMC's fault that the software provides no clue as to where things are going wrong in the serial plumbing? Is it the AST2500's fault that designers are routing every serial line through it and making it impossible to eliminate as the cause while troubleshooting? Is it IBM's fault, because the design of OPAL (OpenPower Abstraction Layer) encourages construction of this kind of Rube Goldberg machine?
If anyone from IBM is listening: don't route all your serial lines through the BMC on your reference designs... system implementers will just copy it.
Okay, that's interesting. Did you file a bug with your system's firmware provider or with upstream?
You can file it against obmc-console at https://github.com/openbmc/obmc-console/issues
> Digging into the source, I found a really wonky software buffer... which kind of blew my mind - since hardware buffers and flow control exist.
Yep, it's how OpenBMC provides the console via IPMI, Redfish, SSH and on the commandline, as well as routing the console out to the connector on the rear of the chassis.
> I don't remember if that was a case where python was somehow in the pipeline, but that was unfortunately very common in OpenBMC.
Generally there hasn't been any python in the console handling pipeline. That said, python, while especially slow on a BMC, was pretty important for getting the project off the ground.
At this point OpenBMC has been python-free for several years.
> I also had a lot of trouble getting the thing to honor the most basic settings, like baud rate
There's some nuance to this, as depending on your system design the console may be coming from the host to the BMC via Aspeed's Virtual UARTs (VUARTs). The way the VUARTs work is the BMC and host are connected to either end of the two FIFOs between the UARTs' APB and LPC/eSPI interfaces. As such there's no baud rate as no data is clocked out in RS-232 fashion - the data is transferred as quickly as either side can access their register interfaces.
This has caused issues in the past with control flow that lead to data integrity issues:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
> But it is harder to confidently place the blame on that one. Is it OpenBMC's fault that the software provides no clue as to where things are going wrong in the serial plumbing? Is it the AST2500's fault that designers are routing every serial line through it and making it impossible to eliminate as the cause while troubleshooting?
I agree it can be difficult to debug where things are going wrong in the console pipeline.
In concept a serial console should be simple, but when you bring in requirements like various kinds of SoL, it starts to get more complex.
Nope, I patched my code to mainline the bits directly to where they were going.
> ...it's how OpenBMC provides the console via IPMI, Redfish, SSH...
Which is why I didn't bother with upstreaming :) I'm all for it generally, but in this specific case I saved myself and others time (distilling a reproducible test case, crafting code for public consumption, arguing my case, etc); I'm not the target market - I'd cut the BMC traces if I could without wrecking the machine.
> ...was pretty important for getting the project off the ground.
Sure, but far too close to the metal for my liking. But then I've always bristled at the sight of it being used to replace far more constrained tools - where constraint is desirable (like build systems).
> There's some nuance to this...
That was mercifully high-level, but touches on an major concern of mine that is more to do with Aspeed than OpenBMC: backdoored blobs. The AST2500 is constantly sniffing a software defined uart for a magic sequence to drop it into the debug shell... this is the opposite of what I'm looking for in a secure or performant system.
> I agree it can be difficult to debug where things are going wrong in the console pipeline.
Yup, without even considering the client hardware/OS/application stack, or the getty process on the host you actually want to talk to. I've actually been researching a bug that made it into BSD4, the fountain head. Nobody seems to have noticed that a bunch of terminal attributes, when set from gettytab, stopped having any effect 30 years ago (aside from a single potentially related unanswered complaint on Usenet in 91).
http://students.engr.scu.edu/~sschaeck/misc/aspeed-edac.html
Also: "Anton Blanchard", Distinguished Engineer: IBM Total Duration 20 yrs 3 mos
I don't spend enough time with FPGAs to even pretend to have an educated opinion on HDLs.
I'm guessing cost/availability is really what it boils down to, since the ASRock chips are probably just that much cheaper and better understood.
https://en.wikipedia.org/wiki/IBM_Hardware_Management_Consol...
(Powerman, conman, and freeipmi come from Livermore for use with serious HPC systems.)
This must get points for Respects Your Freedom anyway.
I mean, technological independence from the US should be a desire of every country that _isn't_ the US, as the US gives no rights to foreign nationals or their data, has a history of backdooring products and is suspected of making some of the most sophisticated malware the world has ever known.
But what if the USA was WW2 Germany, and they had dominion over your entire technological infrastructure.
I'm not necessarily saying that's the case, but I'm not so quick to throw in pure unadulterated trust to any foreign country, and ultimately, USA could decide the rest of us are bad for nearly any reason, just look at how much pressure the US exerts on Sweden, which is hardly known for human rights abuses.
I understand that the US has its fair share of atrocities, however for me they are the "lesser evil" if that makes sense.
If you have reason to believe that some state-equivalent espionage group implants malware in machines headed in your direction, it is to your advantage to defend against that.
It seems to be the case that human-rights advocates as well as dictatorships have been such targets.
I also don't see a huge difference in genoicde capability between 2010 servers and 2020 servers, but 2010 servers are eWaste. Restricting genocidal organizations to ten year old technology would raise their power bills, but not diminish genocidal capabilities; and restricting much more would require immense effort on a global scale. (And, of course, you would need to get near-global consensus about the country, which is quite difficult)
We could have "friendly nation" or "no pirate nation" open source licenses that do not give North Korea, Iran, Russia, etc massive free software gifts to help them oppress their citizenry. Logically, there didn't have to be a North Korean Linux (which there is.)
Such licenses wouldn't extend any rights to citizens of rogue countries, or to non-citizens while in such countries, nor entities (including companies) with control or ownership ties to rogue countries, or, say, countries which jail or execute LGBTQ. (At the very least, we don't have to extend a license without payment and contracts.) There are risks to friendly-nation or no-rogue-nation licenses, granted; but there are nasty consequences to handing more and sharper knives every year to rogue countries, too.
Whether one likes it or not, an executive order from Biden could perhaps make that happen tomorrow.
The same logic applies to the US too, by the way. I don't think the NSA thought too hard about e.g. whether backdooring Cisco routers was in violation of any IP laws - I doubt they'd care much about the contents of LICENSE.txt. Complete exercise in futility.
There are multiple "don't be evil" licenses, with varying types of stipulations. Some literally say "don't be evil". There was one license that made the rounds here on HN a while back that said something to the effect of "you must accept the authority of the Christian Bible". These are controversial at best, and disliked in part because they're often extremely vague, and very questionably enforceable.
Trying to spell out the specific moral or legal stipulations that would prevent one from using software is ... more doable from a legal perspective, but still opposed by FSF/GNU types, because it feels contrarian to the free software movement, and a general distrust for governments and government regulations. Taking people's software freedom away because of where they're born rubs some people the wrong way.
Not sure exactly how I feel about the issue as a whole, I don't buy wholesale into Stallman's ideology, but it's something worth considering.
https://github.com/OpenPOWERFoundation
(Please do not upvote this comment.)