C.F.S. (Chinese Firmware Syndrome) - Page 1
Forum section: electronics / general

author: WimWalther
author_rank: Regular Contributor
timestamp: November 09, 2023, 02:32:31 pm
content: We've all experienced it, but can any of us explain it? Chinese Firmware Syndrome refers to the nonsensical, often bizarre choices made by Chinese firmware coders on any number of (often low-end, inexpensive) products. Note that CFS doesn't cover bugs - only intentional behaviors and features that make no sense.Example #1 - mini BT transmitter/ receiver. It uses simple, easily-understood tones to indicate power on/off and connect/disconnect. But if the battery runs low, it blurts out "Battely row! Preese chaghe!" like every five seconds.Example #2 - another mini BT transceiver. This one uses a combo of tones and robovoice that's uncorrected for pronunciation. On startup, "Bluh-tuth mode active!". (Bluetooth is the only mode it has, btw).There are countless others. Which are your favorites? How about 12/24hr clocks that only display temp in C when in 24hr mode? =)

author: ataradov
author_rank: Super Contributor
timestamp: November 09, 2023, 04:31:54 pm
content: It is the same thing universally, not specific to China. Hardware is usually fast and easy, software is hard and takes a lot of time. If you are optimizing for cost, then the first version of the firmware that works is going to be released. Often it is just the vendor demo code with minimal modification, so it is full of goofy stuff.Normally this gets worked out with updates, but if you are saving money, there are no updates.One thing I wish they all figure out is that if you publish the code and let people modify it, you may end up with a way better product in the end. Or potentially nothing will happen if nobody really cares about the product. And in many cases those things run obscure MCUs with no documentation and no toolchains, so usefulness of that may vary too.

author: Nominal Animal
author_rank: Super Contributor
timestamp: November 10, 2023, 03:37:59 am
content: Quote from: ataradov on November 09, 2023, 04:31:54 pmCan confirm.For reasons, some years ago (when they were finally convinced to provide the sources), I took a look at many a router firmware based on some variant of Linux. "Reputable" vendors for home-class routers like ASUS were the worst. They really looked like a highschool kid had taken a SoC vendor's SDK as-is, and made random changes to it until it seemed to work. I still get the heebie-jeebies when I think about those, because there are tens of millions of those things used and relied upon by people all over the world. Reminds me of the videos where someone is halfway up a skyscraper, poking a hole into the concrete support, finding only loose sand behind a thin layer of mud.

author: WimWalther
author_rank: Regular Contributor
timestamp: November 10, 2023, 05:46:29 am
content: WRT Home WiFi routers, I'm not at all surprised considering the number of bugs and crash events they exhibited.. the classic "just try unplugging it" fix for mysterious non-working internet.But everything you two mentioned falls under "bugs". CFS is limited to strange *intentional* behaviors.. stuff someone thought would be clever / nifty but simply doesn't work out that way...Example #3 - Low Battery warnings that trigger every few seconds, when once per minute or two is completely adequate.

author: SiliconWizard
author_rank: Super Contributor
timestamp: November 10, 2023, 07:07:58 am
content: Quote from: ataradov on November 09, 2023, 04:31:54 pmExactly. And the relatively universal way of managing projects these days is to assume the hardware will be the hard part with long dev times (due in part to many managers not understanding much of hardware, and in part to the fact that, indeed, there are fab times for hardware that can't be compressed), while software is quick and easy (often again because managers think they understand software, and think that software is always quick and easy and that features can always be added at the last minute). Experience invariably proves that it's the software side that takes the most time in any modern product development (except probably niche devices with very complex hardware and relatively simple, to no software), but companies still manage projects in the same way, invariably assuming that software is so flexible and easy.Assuming that is not entirely their fault (at least initially), as that's what people have been told for several decades now. (But it becomes their fault when they have experienced otherwise and still keep managing projects in the exact same way.)Utlimately, I think we still don't know (I mean, on average) how to develop software properly and how to manage software development, despite a myriad of attempts that have often added to the confusion rather than solved much.

author: Nominal Animal
author_rank: Super Contributor
timestamp: November 10, 2023, 08:09:20 am
content: Quote from: WimWalther on November 10, 2023, 05:46:29 amAh, okay. The same argument still stands, though: this is nothing specific to China, and extremely common in anything software.A good very recent example isa particular error message in git, the tool behind github and gitlab, used for distributed source code (and version) control. A function called "run_slot()" that does a specific http/https query and obtains the result, will fail with error message "error: RPC failed; result=18, HTTP code = 200" in older versions of git, when the connection is unexpectedly terminated (by the server, or by a router in the middle injecting an TCP RST packet, tearing down the connection; this does not occur due to connectivity issues). The authors think the error message isobvious, more or less. It's concise – only one place reports an "RPC failed" error – and includes both the libcurl error code (18, CURLE_PARTIAL_FILE) and the HTTP status code provided by the server. (The current version of Git reports "error: RPC failed; curl 18 Transferred a partial file".) Only the "error: RPC failed;" part is localizable.All software user interfaces, including web page user interfaces, are chock full of these. Regardless of how inane a feature is, you can find dozens of key developers and users claiming it is perfectly cromulent and your complaint makes no sense at all you troll. My favourite is how browser developers explicitly refuse to let the user set UTF-8 as the default character set when no character set information is available (you can only pick from non-Unicode ones, so something like Windows Codepage 852 or Mac Roman is fine), because "UTF-8 is not a legacy character set", even though it is older than for example ISO 8859-15, or ISO Western European with €.

author: Cyberdragon
author_rank: Super Contributor
timestamp: November 27, 2023, 02:49:36 pm
content: My favorite is "Bwootoof connected uuuhhhh...suksefuwry"

author: wraper
author_rank: Unknown
timestamp: November 27, 2023, 03:10:12 pm
content: Here my examples of non Chinese goofy firmware.1. My AEG dishwasher, to select between multi-tab and detergent/rinse aid you need to press two buttons at the same time. Sounds fine? Well that only works after you selected particular program. Selecting another program or finishing of the washing cycle defaults it back to detergent/rinse aid. Like what in hell they were thinking?2. Bradley smoker that is officially sold in EU. Power cycle resets it back to temperature in Fahrenheit besides overall goofy UI.2. Look no further than UI from hell on Hakko soldering stations like FX-888D and FX-951.

author: Halcyon
author_rank: Unknown
timestamp: November 28, 2023, 01:03:09 am
content: One bugbear I have is with my Lenovo ThinkVision monitor. It has 3 video inputs and when it detects no signal, it goes into standby mode within seconds.The only way to change video inputs is to press the power button, then very quickly scroll through the sources until you get the one you want. Pressing the source button while the monitor is in standby has no effect.It's a ridiculous design. Every other monitor I have shows a "No Signal" message for a defined period (say 30 seconds) which allows you to use the on-screen menu, or pressing the source button will wake up the monitor and allow you to pick a different input source. Likewise any button presses reset the timeout, but not on the Lenovo.

author: DavidAlfa
author_rank: Super Contributor
timestamp: November 28, 2023, 01:20:59 am
content: Lenovo devices are pretty buggy.My Lenovo g27q-20 randomly shows "Unsupported mode" when powering on.Turn off/on, done.Luckly not happening very often, but no firmware updates whatsoever.Probably the typical develope/release in a hurry thing.Chinese BT earphones are very annoying when coming to low battery warning.Every minute a loud and annoying "BATTELY LOU" message or ear-drilling chime like "Bepbepbeeeep".I often go sleep with them at 5% volume level with chilling music or talking, to later suddenly wake because of that crap.

author: wraper
author_rank: Unknown
timestamp: November 28, 2023, 01:39:49 am
content: Flir i7 thermal camera (i3, i5). When battery runs low, it shows a message which you must confirm with particular button. No other button works including power button. So you cannot even turn it off without confirming stupid message. For quite some time I actually thought that stupid thing locks up when battery runs low.

author: wraper
author_rank: Unknown
timestamp: November 28, 2023, 01:51:15 am
content: IKA C5000 calorimeter (German design/production), after 1000 run cycles it shows a popup message that bomb vessel needs pressure testing. Popup message shows OK/CANCEL which you can select with arrow buttons, then you press OK button on its keyboard to confirm selection, nothing happens, popup does not go away and menu is still locked. So people were just shutting down the thing with power switch and then turn it ON again. If the same bomb is used a few times, message will reappear. When people got pissed off enough, deleted particular bomb in settings and then reentered it back. Turns out you need to confirm it with space button and the message will go away for another 1000 cycles. Any other message or menu selection is confirmed by OK button. User manual says nothing about the button to confirm.Their newer C6000 model is even less sensical because you can navigate the menu for hours through the same things and not find some basic thing you remember was somewhere there, even though it was 1 click away on some totally unrelated thing somewhere on the screen. And this cycle of stupid repeats every year because you forget the obscure way how you accessed it last time. Or you enter adjustment value, then you must press, "set" button, then "confirm" button, then "OK" button for it to get saved, all of them are shown on virtual keyboard on the screen simultaneously. If you don't do it in this particular order and press OK, it will just exit the menu section and nothing will be saved. And you won't know this until open that menu section again.

author: thm_w
author_rank: Super Contributor
timestamp: December 05, 2023, 01:57:10 am
content: Quote from: wraper on November 27, 2023, 03:10:12 pmAnother german dishwasher (Miele):The display and buttons are fully recessed, so nothing can be seen while the door is closed. How do you check if the dishwasher is running or finished? You have to open the door. Once you open the door, it will pause, then close the door again, will it resume? No. It will just sit doing nothing, until you go and read the manual and figure out there is a non-obvious resume button to press before closing the door.

author: wraper
author_rank: Unknown
timestamp: December 05, 2023, 11:43:58 am
content: Quote from: thm_w on December 05, 2023, 01:57:10 amSounds stupid but doesn't it illuminate the floor with different colors to show if it's working or has finished like any normal built-in dishwasher?

author: thm_w
author_rank: Super Contributor
timestamp: December 05, 2023, 10:03:06 pm
content: Quote from: wraper on December 05, 2023, 11:43:58 amNo, was trying to figure out how to add a LED to do what you describe as that would be great. I'm sure it could just tap off some existing portion of the circuit.

author: SL4P
author_rank: Super Contributor
timestamp: December 06, 2023, 03:11:35 am
content: This syndrome crept in during the 1989s globally.Microprocessors and easy to learn toolchains created huge numbers of graduate software epdevelopers - except only a tiny fraction had any idea what they were doing or why,Only two or more years under an experienced developer will put you on the road to writing decent code.Everything else works perfectly until it gets to the customer.aside: examples Pascal, Java and more recently Python are greatteachinglanguages, but carry far too much baggage to be use seriously in anything other than a user-interface.

author: themadhippy
author_rank: Super Contributor
timestamp: December 06, 2023, 03:24:51 am
content: Keyboard not foundpress F1 to continue

author: gamalot
author_rank: Super Contributor
timestamp: December 06, 2023, 03:30:04 am
content: I've had enough of my Korean rice cooker, it talks too much!

author: CaptDon
author_rank: Super Contributor
timestamp: December 11, 2023, 02:57:30 pm
content: I have run into so much shitty code being written here in the states by H1B persons who were hired when the experienced or competent folks retired or were simply let go to be replaced with cheaper labor. Their code is so poorly written. If you don't do button press or inputs in exactly the order expected you get stuck in a senseless loop or the unit simply freezes. I have found persons with advanced engineering degrees are completely clueless in their field of study unable to answer simple questions in interviews or unable to understand even simple code processes that need minor modifications. The code I see is so bug prone it is no wonder fly-by-wire aircraft hang up in unpredicted coding errors and crash killing everyone onboard!! The 'code reviewers' are just as un-enlightened as the code writers, often with the same suspect 'degrees'.

author: Halcyon
author_rank: Unknown
timestamp: December 12, 2023, 10:02:31 pm
content: Quote from: themadhippy on December 06, 2023, 03:24:51 amThat one actually makes logical sense. It allows you to correct the issue/connect a keyboard before continuing the boot process. Useful if you want to boot from another device other than the default boot disk, or you want to otherwise interrupts the normal boot process.Sure the message could be a little more descriptive, but I'm assuming optimal use of ROM space was more important.

author: SiliconWizard
author_rank: Super Contributor
timestamp: December 12, 2023, 10:47:46 pm
content: Quote from: Halcyon on December 12, 2023, 10:02:31 pmYep. But it's fun in itself, as it probably has confused quite a few people. And I bet many did not really even try hot-plugging a keyboard if there wasn't any plugged in (or the current one was faulty), so that they would rather turn off the computer, try to fix the issue, and turn it back on. So in the end, the message turned out to be rather pointless. But you're otherwise right. It's also likely that the "press F1" message was just the default code path when any issue was found during POST, so that they would display it whatever the cause.There's a reason why Apple (and many after them) took the bull by the horns and tried to make things a little less confusing and a little more consistent. But confusing UIs are still lingering.

author: Halcyon
author_rank: Unknown
timestamp: December 28, 2023, 11:33:15 pm
content: Quote from: SiliconWizard on December 12, 2023, 10:47:46 pmI was a hot-plugger. I didn't see the point of switching the machine off to connect a peripheral. Even non-PnP devices usually didn't even need a restart as the machines addressed the serial/parallel port, not the device itself (if that makes sense). I only came across some very few exceptions which specifically stated not to plug things in while the machine was on or damage would occur. Not exactly sure why that would be, perhaps someone else can explain that one? Certain licensing/passthrough dongles come to mind.But yes, I think you're right about the default "something is wrong" key. It's probably the reason why most BIOS's allowed you to disable the keyboard error prompt, so that it wouldn't halt the reboot of headless/industrial machines etc...

author: langwadt
author_rank: Super Contributor
timestamp: December 29, 2023, 01:33:05 am
content: Quote from: wraper on November 28, 2023, 01:51:15 amcould that be safety feature so that an, I assume, important for safety message isn't just dismissed by a random user?

author: wraper
author_rank: Unknown
timestamp: December 29, 2023, 09:37:36 am
content: Quote from: langwadt on December 29, 2023, 01:33:05 amThe problem is it's not written nor in user manual, nor in service manual that "OK" should be confirmed with a different button. I should add it also has a "Chinese hardware syndrome" in regards of a weird ass hardware solutions. Like early revisions had a Shimano bike brake cable inserted into a bucket of water with weak solenoid on dry end and a plastic plug on the wet end. Surprise surprise, in you don't use the device for a few weeks, there is 90% chance it will get stuck because brake cable housing rusts. 100psi valve used on 30 bar nominal, 40 bar max oxygen pressure, I guess nobody told them them that 100 psi = 6.9 bar. Or crystal oscillator GND on ADC board disconnected from the rest of the circuit and connected via 1m long cable shield to GND on another board. The only thing that kept it working was 0.1uF capacitor from VDD to this weird shit. In their newer C6000 model they didn't know that differential pairs do exist and routed ~40cm of USB and ethernet just as usual traces (come from off the shelf SBC board and routed through their own board). Also they did separated GND shit on ADC daughter board which caused ADC IC to occasionally glitch as its digital and analog GND are connected through main board only andboth AVDD and DVDD decoupled through MLCC to AGNDclose to ADC IC and DGND left dandling. To add insult to injury, part of analog front is referenced to DGND, not AGND. "Surprisingly" after adding a jumper wire between IC AGND and DGND pins glitches go away. BTW this covers like 1/5 of weird shit I've seen there.