Most smartphones already have an FM receiver, they are just turned off.

That's not true. Unlike wireline networks, wireless networks have significant psychical restraints on how many clients it can serve.

Here a very rudimentary example that should help us to understand the situation.

Wireless networks are assigned blocks of wireless spectrum (bandwidth) that they can use. These blocks of spectrum are essentially a range of radio frequencies. Let's say that Tiger Mobile has been assigned a block spanning 2100 MHz to 2130 MHz. That means that Tiger Mobile has 30 MHz to service their customers.

When customers connect to the network, the 30 MHz block is divided among the customers to prove the service. The larger the block serving each customer, the better the service. So if Tiger Mobile has one customer on a tower, that customer will have 30 MHz to use; if there are two customers, they each get 15 MHz, if there are three customers, they each get 10 MHz etc... The problem is that this isn't scalable. If there are 100 customers connecting to a tower, each customer will has only 0.3 MHz to use. This will provide atrociously bad service quality.

Data caps allow wireless carriers like Tiger to regulate their users, preventing too many of them from using a single tower at once, overloading its bandwidth. Without these data caps, and if all customers were downloading hundreds of gigabytes a month, service quality would be horrible.

Now that said, carriers in the United States are far more conservative than they need to be with data caps. They could offer their customers several times more data, and the networks should be fine. The low data caps are purely about greed.

And please note that this is a very simplified example. There are countless advanced technologies in place to help carries better use the bandwidth. But regardless of what technologies are in place, we'll always have the same fundamental problem: how to get as much data as possible onto a physically limited amount of bandwidth.

/r/Android Thread Parent