The TTL(Time-To-Live) technique is a very crude way to detect the number of devices connected. However it is not full proof and is bound to give false positives.
Every device through which the packet passes decrements the TTL value by 1.
For example on
Windows, the default TTL value is 128. Assuming you have hooked up your
laptop to the
router, the router would decrement the TTL value by 1. Thus the ISP would be seeing a TTL value of 127 in the packets originating from your IP.
Now, suppose you connected another Windows PC to your router. In this case, it will also have the same initial TTL of 128 and the ISP will not be able to differentiate this as a separate device.
However, things take a different turn if you connect a different type of device. Say you connect a Ubuntu Laptop or an
Android phone (i.e. Linux based). Linux has an initial TTL value of 64. After passing through the router it becomes 63. Now the ISP knows you are at-least using two different devices since it see two different TTL's from your IP (63 & 127).
This is how TTL based detection works and as you see it's not full proof.
Now, bypassing TTL based detection is simple. Both Windows and Linux allow you to customize the initial value of TTL. You can make the TTLs same for all the devices, so the ISP is none the wiser.
The other way is to get a router which supports TTL rewriting. Actually any openwrt/dd-wrt based router will do and you can use iptables for that. In this case, the router will intentionally rewrite the TTL values to make it the same for all packets it sends out.