[HTC EVO 3D] bhambalek:
Okay, first off, I'm not fluent in any programming language, even though I've taken a few programming classes and studied some programming in my own time. I work at a computer repair shop and fix all sorts of computer-related problems on a daily basis. I have a damn good knowledge on how computers work. I'm 24 years old and have been doing this **** since I was 12. I've done enough breaking and fixing computers to learn how they work.

For those of you who do know how computers work, forgive me for posting all this, but to shut up the noobs about why this or that isn't working or doesn't work yet, I'm going to explain how smartphones and computers work. Basically I'm sick of reading post after post of complaints about the camera not working, how to flash, or if this or that works... so here we go.

Let me start off by telling you that your smartphone is essentially a computer. In fact, just about any cell phone produced in the past 20 or so years is a computer. If you're old enough to remember the old brick shaped Nokias with a monochromatic screen and no Internet, yeah buddy, they're computers too. It's just that our phones these days are just a tad bit more sophisticated.

Now let's dig a little deeper. Let's divide computers into two parts: hardware and software. You have a piece of hardware (the phone that you're flashing roms on) that stays the same, and the software (the operating system, a.k.a. Android 2.3 or 4.0 or whatever) controls how the hardware works. The hardware cannot operate correctly without the software, and the software cannot operate at all without the hardware. The hardware is basically a bunch of switches that do ****. It's like your light switch at home. You want your light on? Flip the switch to the on position. You want the light off? Flip the switch off. Let's take wifi for example. You want wifi on? Flip the switch on. Off? Flip the switch off. Plain and simple. Instead of having a manual switch to turn wifi on and off, manufacturers and software developers have conveniently made a touchscreen "switch" to turn wifi on and off. Now how do you use a touchscreen to flip on and off a "switch"? That's where a kernel comes into play.

Okay, we're not talking about Colonel Sanders from KFC (which some fried chicken would be delicious about right now) or a popcorn kernel. We're talking about an operating system kernel. So... wtf is an operating system kernel? A kernel is the core of an operating system. It basically translates your programming language into code your hardware understands. Instead of being excessively difficult by typing a bunch of ones and zeros (011000111001101) to program a bunch of switches, programmers have developed different programming languages (higher level code such as Java, C++, Python, Visual Basic, etc.) that essentially translate into lower level code (code that the hardware understands, a.k.a. the nightmare known as assembly or binary). Therefore, the whole purpose of creating a higher level programming language is to save time by typing **** that we understand, which goes through the kernel and translates into **** that we probably wouldn't understand at a first glance, but hey it works.

Now how about that camera on our EVO 3Ds that hasn't worked since Android 4.0 comes out? Instead of complaining about how the camera doesn't work, I have a question for you. Do you have access to HTC's "schematics" to the camera? Can you program the camera to work with Android 4.0? Didn't think so, otherwise we'd have a fully functioning camera and nobody would be whining about it. Oh, but it worked on Android 2.3 Gingerbread. Shouldn't it work on Android 4.0 ICS? Nope. Android 4.0 is a different operating system. Google decided to change up a few things, therefore your camera is "lost in translation". That means if you don't have the schematics to the hardware, you're gonna have to either A) wait for HTC to release the drivers to the camera or B) try to program a driver for the camera through trial and error. Speaking of drivers, what is a driver?

Okay, a driver is short for "device driver". You have a device. In fact, you have many devices on your phone. On your EVO 3D, you have at least the following devices: a screen with 3D functionality, capacitive touch sensors, ambient sensors, two cameras, a battery, a 4G WiMax modem, a 3G/2G/1X data modem, wifi network device, cell antenna/modem/thingy that lets you make and receive calls, headset/microphone jack, microphone, speakers, and bluetooth radio device. In order to simplify things, manufacturers have been nice enough to release drivers for those devices. They were like... "Hey! Let's be nice and make a file that contains all the information on how to work this specific device!" Now why would they go and do that? Well, hmm... let's see. Let's say you're bright enough to make a camera app for Android phones. Would you rather hunt down the schematics to all the Android manufacturers' cameras and waste all that time on programming each and every camera to work, or would you rather just call on a file that's usually placed in a specific location on every Android phone? I think I'd rather call on that file. Yeah, that file is a driver.

So, let's say you wanna get the camera working on the EVO 3D. First off, you have the hardware. You have the actual, physical camera. First off, you're gonna have to know the diagram/schematics to the camera. Since you can't actually build physical switches to operate the shutter/LED/zoom/etc., you're gonna have to do all that through software. Well, as you know, a switch is either on or off. In binary code, 1 is on, 0 is off. Can you program a bunch of 1s and 0s to operate the camera? If you can or can't, either way it's not gonna work for Androids. That's where a kernel comes into play. Now you have to write a kernel that knows how to switch on and off those specific parts of the camera. Well, a kernel is no good without an operating system. So, now you have to write an operating system that tells the kernel what to do. Then, you have to make a driver that is not only compatible with the operating system, but it also tells the kernel what to do to the device (a.k.a. the camera).

So yeah, the reason why our cameras and other things such as 4G/hardware acceleration/3D functionality doesn't work on our phone with Android 4.0 is because 1) we haven't done enough trial and error to figure out how to make those specific devices work, 2) there aren't official drivers released by HTC to make those devices work, and 3) the kernel we have just doesn't work with our devices yet. So quit complaining and do some research on how to make these pieces of hardware work with this new software.

Okay, so yeah, long post. Forgive me for that. I just wanted to rant and explain how the intricate parts of our phones work. I just got home from the casino and had way too much to drink (two Budweisers, a liquid marijuana, a royal flush, a gin and tonic, a blue Hawaiian, a Long Island iced tea, and a Captain and Coke). Either way, I'm about to lie down and pass the f*ck out. Have a good day.

---------- Post added at 02:24 AM ---------- Previous post was at 02:21 AM ----------

First off, the toggling would be driver related. The driver would translate into machine code, which would tell the data modem whether to switch into 3G/2G/1X mode or completely off. It would be up to the operating system and apps to tell the driver what to do. Remember, the kernel is nothing more than a translator. It would be like me translating your English into Spanish and telling the Spanish speaking person what to do. The translator doesn't do any physical work. The kernel just tells the device what you want it to do.