I got a DS Lite used and the left shoulder button did not work. I was angry at the seller, but then he told me how to fix it.
no modding required.
Okay, what I am about to tell you will sound completely ridiculous, but it works (at least it did for me). GBA SPs, DSes, DSlites, and DSis all have poorly designed shoulder buttons. dust or finger grime or whatever gets in and can't get out, and lays to rest on the contacts, rendering the buttons inoperative. so you need to get the dust off.
Now, here's where I start sounding like an idiot. Turn off and close your DSi, and press the broken shoulder button to your lips. make sure there is an airtight seal covering the entire button. Then give a good, hard blow (and try not to spit, obviously). the air will flow around the shoulder button and through the little cracks where the dust gets in and push the dust off the contacts.
It sounds ridiculous, but it worked for me on my first try. Also, you'll look like a total idiot when you do it, so make sure no one is around.