[AT&T, Rogers, Bell, Telus Samsung Galaxy S III] jason2678:
There are some guides linked to these forums, but the ones I know of are pretty old and out of date. Samsung pushed Knox with the newer firmware updates, and that really changed how we have to handle this phone. The information you're after has been written all over this forum by many members, myself included, but I can't seem to find a decent post to link to right now. The problem is there is a lot of information, it is all fragmented across thousands of posts, hard to search (hard to find what you're after anyway), and some of the old information can be a little dangerous with the newer bootloaders.

The key to not bricking this phone is to know what bootloader and modem you're on and never, ever try to downgrade it (if you're on a newer one). First thing to do is install the Samsung phone info app from the play store and check your bootloader and baseband. Alternately enter this in a terminal:

getprop ro.bootloader
getprop gsm.version.baseband

If your bootloader ends in MJB, NE4, or NJ1 don't ever try to downgrade it. The result is a hard brick that is very difficult to recovery from. That means never Odin back to stock if you're on MJB, NE4, or NJ1. The only stock Odin package AT&T allowed to be released is the "ancient", new bootloader bricking LK3 Android 4.1.1 firmware.

If your bootloader or modem end in NE4 or NJ1 you're good to go. You can flash any newer ROM you want. If you're on MJB you're probably ok too. If you're on anything else your mobile data probably won't work with CM 12.1. You'll have to look into updating.

Another good thing to know is that the i747/d2att bootloaders are not locked and have never been locked. Do not attempt to unlock them. Any GS3 bootloader unlock procedure you come across is probably for the Verizon variant, and if you try it on a d2att you'll likely have a hard brick.

Also be aware that the i9300 was marketed as Galaxy S3 as well, but it is a totally different device on the inside. Never flash an i9300 ROM on a d2att phone.

Once you've verified what bootloader/modem you're on, and that it is good to go with CM 12.1, these are the basic steps I'd take if starting with an unmodded phone:

1) Download a SuperSU TWRP flashable zip and store it somewhere on your phone.

2) Use Odin to flash the latest version of TWRP for d2att. Uncheck everything but f.reset time so the phone doesn't auto reboot. Upon success pull battery.

3) Replace battery. Boot straight into recovery by holding vol up + home + power until you see some tiny blue text in the upper left then releasing. If you mess up and accidentally boot into your stock ROM your custom recovery will likely get overwritten with stock and you'll have to repeat step 2 and try again.

4) Flash SuperSU in TWRP.

5) Reboot to stock ROM. Use play store to update your SuperSU binary. You'll probably have to reboot once or twice, but eventually you'll get working root and Knox disabled.

6) In stock ROM open a terminal and enter:

su
reboot nvbackup

Your phone will reboot. It will seem like a pretty normal reboot, but you'll see some quick flashes of blue text in the upper left if your looking for it. This fixes a Samsung derp and makes sure you have a working EFS backup. This was the only reason we rooted your stock ROM; sorry about all that work just to do this but if your phone ever panics from a bad flash and triggers its autorestore function you'll be happy you did it.

7) Download ROM for d2att and matching gapps. Store them on external SD if you have one. Otherwise verify you can copy files from PC to phone via USB when your phone is booted into TWRP. With TWRP up an running you should just have to plug it in and phone will be recognized by PC as a media device you can transfer files to.

8) Reboot to recovery. Make a backup in TWRP. Store copies on external SD and somewhere off phone for safekeeping. In fact, always keep a nandroid backup or two, a ROM you know works, and a gapps package on an external SD - just in case.

9) Do wipe -> advanced wipe. Tick dalvik, cache, system, and data.

10) Do wipe -> format data. This is why your new ROM and gapps need to be on external SD. Otherwise you'll have a blank phone and you'll have to copy something over via usb or push it via adb to have something to flash. You don't need to do this every time you flash a ROM, but you do need to do it when switching from touchwiz to AOSP and vice versa.

11) Flash ROM

12) Flash gapps

13) Reboot - be patient. 1st boot might take 10 - 15 minutes on a lollipop ROM with this phone.

14) Profit

This probably isn't detailed enough to use as a walkthrough. It will give you an idea what to search and do more research and reading on, and I think I flagged most of the hard bricking pitfalls owners of this phone run into.. Make sure you understand the whole procedure before proceeding. Wouldn't want you to brick your phone trying to deal with a potential vulnerability there's a remote chance you might be targeted with.

Good luck. I made it sound a little scary, but as long as it is handled properly this phone is a flashing beast. If I haven't flashed mine dozens of times, then its in the hundreds. Never had anything go so wrong to the point that I could boot up into recovery and restore or flash my way out of it. ;)