UUUMMMM A. you just said he is an angel in school & on the bus Etc.
He is testing you! You have to lay down the law. Make a list of his favorite things to do. 1 being the most favorite. Try and make it a good sized list, like 1-20. Show him or read the list to him and see if you have it in the correct order. Make him think it is some type of game so he will want to give you the most honest answers.
THEN, the next time he doesn't listen you take the list out and tell him that if he doesn't listen the thing on the bottom of the list is GOING to be taken away. He will more then likely have a huge fit. Tell you you are mean and he hates you, etc. But you have to stick to your guns. Tell him you are sorry that he feels that way, but that is how it is going to be. Work your way up the list as you need to.Make sure that you are reminding him how the list is getting shorter everytime he is not nice. Remind him that he really doesn't want to let that list get to #1 or he will not have anything fun to do.
Put it on the Frig. or some other place where he can see it, but not reach it. Have your other half or family members notice the list and comment as needed. Warning him that he is loosing a lot of things or how he is behaving better and his most favoriate things are going to be safe.
It will not be easy on anyone, but you have to be tough and get this under controal before it becomes a huge life issue. Take it form someone with grown children, who by the way never speak back to anyone! I am truly blessed with my boys!! UUUMMM young men wwaaahhhhhhh I'm getting old! No babies!