Grandstream HandyTone 503
My current SIP ATA is the HT503 from GrandStream. I bought it because if I'm going to use VoIP at all at home I need to have a reliable fallback, at least until all my ducks (ISP, router, QoS, ATA, etc.) are in a row. And realistically I'm probably going to be paying huge monthly fees to Qwest for nothing but local phone service for the rest of my life. There are many independent VoIP providers like Axvoice who let you BYOD (Bring Your Own Device). Their Unlimited calling plans are under 10 bucks a month which may be the break you are looking for.
The HT503 has an FXS and an FXO so that it sits between our phones and our land-line. This means I can pick up the phone and place a call on the public switched telephone network (PSTN) or on the Internet depending on how I dial. It also means that calls coming in from the Internet or the PSTN all ring the same phones. Thus I can try VoIP (and get my wife to try it) without disrupting our lives. (It can also do fun things like let me call in from the Internet and place a local call on my land-line but I don't use those features.)
The dark side to this story is that my first HT503 completely failed it's firmware upgrade and would not boot at all. Two more shipping charges later I had another HT503 which I upgraded far more carefully. Why would any embedded device not have some fail-safe recovery method? Dunno.
To add insult to injury when I finally got the new device configured I found that it would not dial on the PSTN reliably. I tried to tweak settings to get it working but I failed and had to pull the plug. Months later I saw that there had been many firmware revisions since my last try so with renewed confidence I upgraded and tried again. Sadly I got the same result: when I'd dial a ten-digit phone number I would get a message from Qwest that I had dialed wrong.
It turns out this was actually my fault (sort of). Recently central Utah was moved to ten-digit dialing to accommodate a new area code they decided to overlay on the same region. I decided it would be nice to have the device do the right thing when a seven-digit number was dialed, so I programmed the dial-plan to add 801 to the front of any seven-digit number. It turns out, though, that GrandStream dial-plans are not interpreted the way I thought they were. For some reason when I dialed a ten-digit number the device would truncate the number and slap 801 on the front resulting in a new, wrong, ten-digit number (801-801-5550 if I dialed 801-555-0123). I still don't know how to write the correct dial-plan for this. After dropping the seven-digit rule everything works.
Actually there was one more brief problem where an incoming PSTN call would ring but when the person answering the call picked up they would hear a busy tone and the caller would continue to hear ringing. That problem went away. I'm not sure if I did something to fix it. When the HT503 makes a connection between it's FXO and it's FXS it does so by having the one port call the other on the local loopback interface. The answer to this mystery may be in that architecture somewhere. One thing it means is that if you select a lossy codec for both interfaces it seems to actually encode and decode the audio even though it's on the same device.
Overall I'm actually going to hazard recommending this device. It's compact, affordable, full of great features, and so far (apart from my own mistakes) has been very reliable.