Firmware.

b4dm4rk@seemel.ink to Technology@lemmy.world – 2634 points –
218

I'm a high school teacher and I recently was discussing this. Protip: don't talk to 14 year olds about how if something is in between hard and soft, it's firm. 🙄

There’s a surprisingly more expansive demographic that pro tip applies to.

I'm 41f (going on 13 at times), and this is why my husband hates(loves) having me around the shop - all the mechanical everything is full of euphemisms and innuendo. "mating surfaces" 😂

Are emojis acceptable here? Because I’d like to insert the hand raise one here

I think yes, let’s make a new culture of restrained emoji use 🙌

Oh were they referring to praise hands? I thought they meant 🙋

Yeah, that tip is applicable for a lot of people who understand what sex is, this isn't something that really goes away with age in a lot of cases.

1 more...

I had a physics teacher who measured something against his hand in front of class and started to say, "You should try to..." then stopped before telling us he almost said "you should try to use your body to measure whenever possible" but stopped because he remembered he was talking to a room full of high schoolers.

1 more...

Firmware is just software that runs in a different place.

Source: me, I write firmware sometimes at work.

Well, it's usually closer to the hardware though. Your average x86/64 software dev doesn't have to struggle with pins, addresses, buses and timings that much, if at all.

I''d like to know that where spyware is located?

Wait... It's not "firm" as in "company that made the stuff"? FIRMware = the official software a firm pushes to patch things they make

But third party firmware isn't official

By the way, "joystick" was kinda rude back in the day, but nobody even notices now.

What was more acceptable? "Control stick"?

No, "joystick" was the original term. Everyone in the past were a bunch of perverts.

It could have been worse. It could have been named enjoystick...

It was named by pilots. It's in the, um, cockpit.

Nowadays it's analog stick, where did all the joy go, I say?

what ? why ?

Wikipedia seems to suggest it was an original term, first recorded use in 1909, and mentions nothing about alternative terms or controversy. I call BS

He means rude as in people made a sexual innuendo out of it.

I remember in late 90s my brother bought a joystick. The brand was ThrustMaster. Literally, that was the name. ThrustMaster Joystick.

We still laugh about it sometimes.

TIL! I have never even wondered why it is called that. Just took it as a fact and went along with it.

Damn… I always thought it meant the “firm” putting their “ware” on the chips. 😂

I actually never tried to find any meaning to it. I thought it was just software for the BIOS (which it is), and that's it.

But this half wat between soft and hard? Whoa.

Anyone remember shareware?

200+ Shareware games on a CD, played the shit outta those. And they came in magazines or were given out completely free.

I believe demos for games should still be the norm.

And they arrived (because I don’t want to use ‘came’ given this thread already) on cereal boxes.

I had never heard of that around here (Germany). Got my first PC '99, so I should have noticed; was looking everywhere for cheap Software deals. But there were some other companies which gave out free CD-ROMs as advertising with shareware and demo games. Some of those games were never finished, lol.

The Internet Archive has those Nestlé CDs btw :)

Happened in Canada for sure. The post made me go dig through boxes in the basement and try to remember where my old cdrom drive and cable that would connect to a new Mac would be found. Good times and worth it.

Got no "vintage" hardware sadly. In a VM it's not the same. I still have a Floppy drive, but those disks were all corrupted eons ago. I wonder how long my heaps of gamer magazine and bundle-box (bought at Aldi for practically nothing ^_^) CDs are still gonna last...

They were the best of times, that's for sure!

I think demos are coming back. I have a bunch on steam recently, and Nintendo has a ton of them on thier storefront.

That's good news. I hope that trend persists then.

I sharewared my firmware and got malware.

I got malware in my wetware and had to change my underwear

Oh man, Doom. Getting 1/3 of the whole game was incredible. Also Deus Ex years later. Some people hated the Ellis Island level, but I spent so much time exploring everywhere.

I fucked around so long that I failed the mission. It gave a prompt that I had 17 minutes left to do the last thing, and ran out by 20 seconds or sth.

Gotta give that game a whirl again soon, with proper textures & mods & fool around with ReShade for hours until my back hurts and I gotta lay down after an hour of actual gameplay, muhaha.

The kinkiest of the wares

1 more...

Then there's wetware (people).

I miss some of the older ones from my college days (1990s).. million logical instructions per second (megalips), and measuring mouse speed in mickeys/pixel.

With the advent of lab grown animal neurons interfacing with parts, we need to expand the definition of "wetware".

It's meat. Doesn't even need to be people meat. Just meat that can be trained to react to stimuli, which opens up some options depending on complexity.

Extra firmware cannot be modified.

Firm firmware might be able to be modified, but documentation is largely unknown.

Silken firmware is easily modified by the user.

These names are taken from tofu packaging.

Super firm trust on first use.

Can someone ELI5 what firmware actually is though? I kind of knew it was half way between, but i don’t know what that looks like.

Hardware is the physical part of computer.

Software is the code that runs on the computer to do the thing you want to do.

Firmware is the code that is installed on the hardware itself, usually in some sort of permanent or semi-permanent memory to make the hardware work.

Can you provide an example for stupid people?

Say you have your display, this is made up of millions of lights that on their own just light up in whatever single colour you want, but together they light up to create an image.

Your software takes care of breaking down that image of a cat you want to look at into its corresponding pixels - with a value for colour and brightness.

For example it'll say this area in the cat's eye is black, so it'll request the no light to come out of it. Another area might be a pale red so it'll request red with some middle level of brightness.

Now your firmware takes that requested black for a specific Pixel and it'll physically cut power to switch off all the lights in the required area. For the pale red it'll power that the red ligh ON with hald power, whilst green and blue are OFF.

(things get more complex once you consider back-lightning)

Firmware is software that makes the hardware do what it is supposed to do that runs on the hardware itself.

The term is used somewhat ambiguously though.

  • Sometimes it is just the pure functionality, "if button is pressed, flip the lights on/off".
  • Sometimes it glues communication with the functionality, "if signal is received over some interface, flip the lights on/off".
  • Sometimes it has an operating system, "when power is on, initiate communications with hardware and interfaces and load software if it is present to interact with any of these".
  • Sometimes it is a package with both operating system and software, "when power is on, initiate communications with hardware and interfaces and load software that I know is present".
  • Sometimes the OS and/or software in the firmware package has a helpful front facing user interface.

It's software that lives in the hardware. It provides low-level control and functionality specific to that device. It runs on the hardware itself, not the CPU of the computer.

For example, a hard drive. We don't want the OS to have to know how to interact with every type of hard drive. Seagate does things differently than Western Digital, an SSD works very different than a hard drive, etc.. The OS sends the same commands to all types of hard drives, but each hard drive needs to know how to actually comply with the commands. If the OS is asking for a dozen different files all over the drive, it would be dumb to try and read them all at the same time. The OS doesn't really know where they are on the spinning disk, but the drive does. Firmware written specifically for the device can do a much better job planing how to fetch the data so the read head doesn't need to go back and forth a bunch of times, but instead make one good pass fetching all the data as it comes to it.

Hope that helps.

FIRMware is SOFTware (code) that contains the instructions to run HARDware. In most cases you would experience it, hardware is running an OS (Operating System) which manages all of the firmware ‘packages’. Many electronics, particularly more sophisticated, have firmware that is directly loaded onto the device which has a proprietary OS with limited to no graphical interface.

I am a layperson so if an expert can weigh in on my take I’d appreciate it!

Firmware doesn't run on an OS, you're probably thinking of drivers which are different. Drivers are software that tell the OS how to interact with specific hardware.

Firmware is software that's baked into specific hardware components and it exists outside of the OS. A visible example most people are familiar with would be the BIOS which is firmware for the motherboard. Hard drives, graphics cards, RAM, etc all also have their own firmware.

Other devices such as microwaves, washing machines, cars, or anything using microprocessors (so pretty much everything these days) also have components with their own firmware. It is true that device firmware can drive a UI on some devices such a as a microwave, but most people today wouldn't consider that to be an OS (semantics, I know).

My non-tech wife tried to tell me “obviously that’s why it’s called that” when I’ve been writing software (and even some minor firmware hacking) for 30 years.

Is this the real life?

I think most people get it intuitively without thinking too much about it.

It's software that is tied to the hardware, in the old days most commonly on ROM, which makes it "firm".

Also as many mention, it's tied to the hardware by the "firm" that made the hardware, although I think that is more accidental, it kind of works for the logic too IMO.

It's such a brilliant term that most people generally have an intuitive idea about what it means, without an actual explanation. Today though it's a bit more murky where the line is drawn between software and firmware, since much firmware is distributed through the OS and Drivers, and can be changed on the fly.

Started computer science in grade school with only an hour of actual computer time a week. A LOT of theory and history. Charles Babbage, Ada, ENIAC, etc.

This stuff was drilled into our heads. Same with bit, byte and, halfway between bit and byte, a nibble. It's a thing. 4 bits is a nibble.

Funny enough, I couldn't code to save my life now.

Nibbles are still a thing in embedded programming and in ultra low bandwidth comms like LoRa. For example you can pack 2 BCD digits into a byte, one for the high nibble and one for the low nibble. This results in the hex representation of the byte actually being directly readable as the two digits, which is convenient.

Datasheet for sensors will sometimes reference nibbles as well, often for status bits on protocols like Onewire where every bit counts. i.e low nibble contains a state value 0-15 and high nibble contains individual alarm flags.

QBasic came with NIBBLES.BAS, a snake game using text-mode characters as "pixels". Specifically it faked a 80x50 "pixel" grid using the standard 80x25 text screen where each 8-bit (=1 byte) text character made up two monochrome pixels using ▄ or ▀ or █ or an empty space.

I assume the name derived from the fact that, in a way, one pixel was "using half a byte", i. e. a nibble.

Such good memories of learning to code as a kid in QBasic, I remember NIBBLES.BAS.

I was totally spoiled as my dad had the professional paid version which had an incredible IDE for the time and things like user defined types and structs that I later found out weren't usually part of BASIC. It also had a ton of fancy graphics modes, double buffering, and even a sprite library. I loved playing around making crappy games.

Nibbles can also be used with image types that are less than 8-bit

Rule of thumb: Firmware is essentially software that can break the hardware if something goes wrong.

I always think of it as software that's saved on the hardware. But I guess technically all software is saved on hardware, but firmware is saved on hardware that's different from the hardware you normally save it on.

But maybe your definition is better.

I thought this was common knowledge. I distinctly remember this being taught in a basic high school computing class back in the 90’s.

So in the 90s I had different computer based classes in high school.

There was a "computers" class, which is probably the closest to what you're talking about, in which we mostly learned how to use Microsoft Works.

I also was fortunate enough to have some programming classes. We started out with QBasic and then the more advanced level was visual basic.

None of these discussed firmware. If it came up at all it was probably a casual side conversation because someone bricked something trying to update it.

We started out with QBasic and then the more advanced level was visual basic.

fun times with gorilla.bas? :)

I did have a classmate try to replicate Simon in QBasic but he kept needing the input reversed.

I told him the "feature not a bug" line and suggested he call it NOMIS

Had to look that up - seen it before but never played. Sorry for the late reaction, lemmy.world had enough server problems that I didn't see my notifications in > 2 weeks...

No worries. Lemmy feels way more casual than Reddit anyway and I got notifications for months old comments there from time to time

Now if only I could find a way to open - from my notification about your response - your comment in the context of the community - but on my own instance. I have tried clicking on "Show context" -> links to the home server of the community, where I can not post / respond. Clicking anywhere else:

  • Username: takes me to your profile
  • Community: takes me to my instance's view of the community in which we are communicating
  • Post name: takes me to my instance's view of the thread in which we are communicating, but of course without context to the comment
  • link symbol: does nothing
  • Show context: see above, takes me to the correct place, on the wrong instance
  • Timestamp: does nothing

:(

Anyways, I like lemmy a lot, but I think with the recent nasty defederation announcement at lemmy.world from hexbear I'll have to find another instance as home...

FWIW I home at midwest.social. It's not strictly for the Midwest US but you'll see a lot of stuff for that region there. It's also left leaning and I think the only instances they've defederated so far have been for extremism.

I'm also using jerboa on my phone and from my inbox there's a speech bubble button which lets me make this response from my inbox.

I don't know if either of these things will help you but I figured I'd offer them just in case they did.

Like Tofu. Mind blown

Care to elaborate?

Types of tofu are silken, soft, medium, firm, extra firm, and super firm

Oh. For a second there I thought it was going to be like "Tofu only refers to a specific kind of compressed soybean and you've got other variants like 'Sofu', 'Kofu', and 'Tafu'".

Surely, I can't be the only one where that came to mind?

I thought they were gonna be like “Tofu is the opposite of fromfu”

This implies the existence of silkenware as well as hard tofu.

Horrible to eat.

L take, tofu is the bomb

Tofu is nothing more than a vessel for sauce, its only as good as what's on it

Just like meat

Tell me you eat shitty meat without telling you eat shitty meat

What meat tastes good on its own?

...any? Maybe with exception of chicken (tho a well roasted chicken with skin has a lot of taste even without copious amounts of spices) but I was never into high-quality poultry. All beef is routinely cooked by plain frying or grilling. Grilled pork, bacon is also a big thing. Bacon is meat, people eat it without spices or anything. Roast birbs.

Of course this all under assumption you like the taste of meat, which not everyone does and it's fine.

I don't eat meat, so I might be wrong, but isn't bacon usually cured and sometimes even contains added sugar?

Back when I ate meat, I found any meat to be uneatable without good seasoning. Especially chicken is 90% spice flavour and 10% texture (which can easily be achieved with plant based ingredients).

No way. I've had it. High school gf mother would make for dinner when I went over. Ugh

Proper Tofu, smoked. Press the water out, dice, shake in a bag with oil, sesame and flour, then stir-fry. Try that, just one more time (ofc you don't have to), with matching sides, and see how you like that. Can be quite not-so-bad.

But I can understand that you don't like it!

How come I never noticed that? That’s brilliant :)

Firmware is the Hardware of Software

I've always thought of it more as the software of hardware.

That sounds like drivers

It's all one big layers system.

For sake of example let's take a GPU.

You have the hardware itself, which is rather static and non-changeable after it was manufactured.

Then the firmware is the software that runs inside the card itself in some dedicated chip with interface to control that hardware. It is programmable and replaceable.

Then the driver is the software that runs on the OS, and acts as an interface for other softwares that run on the same OS to talk to if they want to use the GPU. The driver would use the interface that the firmware exposes. Since each OS has a different way of writing hardware interfaces drivers are written for a specific OS.

Then you have software like DirectX or OpenGL that provide yet another standardized interface, only this time between different manufacturers like NVidia, AMD, Intel, etc to talk to supported GPU drivers.

Then you would have the software itself, like a game engine, video player, whatever.

This is the most accurate description in this thread so far. You're just missing bootcode, which is more like the step between hardware and software mentioned in the OP. It's functionally like software (written in assembly and/or a programming language like C, compiled, assembled, and linked into an executable), but it's stored in a ROM, which makes it like hardware. Unless there's a patching system built in to the bootcode, you can't modify it without a respin of the hardware (which is expensive and time consuming).

The microprocessor (mp) it runs on is hard-coded to load bootcode's entry point when the mp is brought out of hard reset, and the code itself does the essential initialization of the SoC. It can handle things like enabling performance features, setting up default interrupt handlers, training links, bringing various other parts of the chip out of hard reset, repairing internal SRAM, setting up the chip to properly handle the parts that are and aren't fused off, etc. Once it finishes, it starts the bios on CPUs (which is basically the bootcode for the motherboard, though it isn't hard-coded but usually stored in a flash chip so it can be updated), or if it's an embedded mp it can start firmware or just wait for an interrupt.

The bios sets up the motherboard and then starts the bootloader, which is located on a boot partition of a storage drive. The bootloader will then select and start the OS, which loads the drivers and provides the framework for software to find the relevant ones.

Drivers are both firmware to make the hardware (video cards, etc.) operate more efficiently and software for the rest of your operating system to more efficiently work with the hardware.

What the hell!

How did I understand that just now?

possibly because a "firm" is also a word for a business / company, so "firmware" as the chipset software coming from the firm that manufactures said chipset makes perfect sense. at least that's why I never sought an alternate explanation - and I am not fully convinced OP is right, actually.

From https://en.wikipedia.org/wiki/Firmware

History and etymology

Ascher Opler coined the term firmware in a 1967 Datamation article,[2][failed verification] as an intermediary term between "hardware" and "software". In this article, Opler was referring to a new kind of computer program that had a different practical and psychological purpose from traditional programs from the user's perspective.

As computers began to increase in complexity, it became clear that various programs needed to first be initiated and run to provide a consistent environment necessary for running more complex programs at the user's discretion. This required programming the computer to run those programs automatically. Furthermore, as companies, universities, and marketers wanted to sell computers to laypeople with little technical knowledge, greater automation became necessary to allow a lay-user to easily run programs for practical purposes. This gave rise to a kind of software that a user would not consciously run, and it led to software that a lay user wouldn't even know about.[3]

Originally, it meant the contents of a writable control store (a small specialized high-speed memory), containing microcode that defined and implemented the computer's instruction set, and that could be reloaded to specialize or modify the instructions that the central processing unit (CPU) could execute. As originally used, firmware contrasted with hardware (the CPU itself) and software (normal instructions executing on a CPU). It was not composed of CPU machine instructions, but of lower-level microcode involved in the implementation of machine instructions. It existed on the boundary between hardware and software; thus the name firmware. Over time, popular usage extended the word firmware to denote any computer program that is tightly linked to hardware, including BIOS on PCs, boot firmware on smartphones, computer peripherals, or the control systems on simple consumer electronic devices such as microwave ovens, remote controls.

But firmware doesn't have to be from the firm that manufacturers said chipset. Third party firmware is a common thing.

see that's something that makes perfect sense but that I wasn't actually aware of... Sorry for the late reaction, lemmy.world had enough server problems that I didn't see my notifications in > 2 weeks...

"Firmware" is a terrible name, it's exactly software.

I disagree. Firmware originally referred to things in ROM or EEPROM. Basically software that is firmly in place and doesn't change, providing an abstraction layer between the hardware and software.

This treats the software as if it were a physical chip which can't be practically changed due to the physics of microchips. The imutability of the storage medium is just a choice of the manufacturer. Sometimes this is a good cost saving feature and sometimes this so they can include anti-features such as preventing repairing your device (e.g. OneWheel).

I'm just telling you where the word comes from. It's like floppy disks, the 3.5mm ones weren't floppy but that's still what we called them because they once were. Firmware used to be something you couldn't easily change. It sits between the hardware and the software. What exactly would you call it if you think the term is bad?

Device functionality software, which is low-level? Probably won't win any minds.

Besides, if we (and others reading) know what concepts each other is referring to then it really doesn't matter what word we use.

Firmware is easier to say, at a company I worked at we also called FPGAs gateware which was both interesting and convenient

9 more...
9 more...
9 more...

It's closer to the hardware. Generally harder to update. It's less frequently updated. And it's less fault tolerant.

Idk, sure, it's technically software. But it's pretty clearly at least a distinct subsection that deserves it's own moniker.

The only common thing between software and firmware is the coding part. Everything else is different. Fault tolerance, memory management, MCU optimization, etc.

9 more...

This reminds me of when, during the building and development of the Apollo program- electrical engineers were tasked with effectively creating the "software" of the guidance system, and when one of the lead developers told his wife "I'm working on the software for the rocket" She replied "We're not going to tell people that you're working in underpants."

I knew this but I'm pretty sure I just assumed that's what it meant somewhere along the way.

I've always thought about it as the way the software and hardware talk to each other.

It'd be really interesting to know ages of people who already knew this and those who didn't.

BTW, already knew it, 58. But then, I remember computers from the 80s and earlier that had the entire OS set in firmware and were not updateable.

38 and I thought firm meant company. Like the firm that created the software for the hardware.

I'm with you, and still think that's the more likely explanation. Definitely the one that makes more sense.

How can you be 30 years in the industry and not know what firmware is?

You can know the name of a thing without realizing where the name comes from.

Yes my bad, misunderstood this as "I don't know what firmware is"

I think he does know what a firmware. Just didnt't realize the origin of the term.

A firmware is neither soft nor hard... it's firm.

(Or maybe I completely misunderstood the tweet 🙄

Oh the name, completely misunderstood this as "I don't know what firmware is".

I know, right? That's why I never call tech support. Nowadays I'm practically computer illiterate, but I still know how to find answers without hearing: "Hello It, have you tried turning it off and on again?".