How to burn Xbox 360 ISOs in Linux

8/04/2009

So you’re looking for an easy way to burn those Xbox 360 isos to a DVD in Linux? A couple of days ago I would’ve said:

Sorry pal, but if you’re looking for a graphical way to do it, I believe you’re shit out of luck. Now stop bugging me, I’m playing TeeWorlds!

Thanks to BoxBlaze, that has changed!

Summary:

  1. Chipping or flashing  your Xbox 360.
  2. Taking a closer look at your DVD burner.
  3. The right kind of DVDs.
  4. Checking for problems with your ISOs.
  5. Introducing BoxBlaze.
  6. BoxBlaze usage (GUI)
  7. BoxBlaze usage (Nautilus script)
  8. BoxBlaze usage (CLI)
  9. Source code.
  10. Download BoxBlaze!

Burning those DVDs using command line tools is super easy if you know what you’re doing. However, we’ll get into that in a minute. First I want to take some time to make sure that you’ve got your 360 all set up, and that you know what type of media to burn the isos to. If you are sure that you already do, just skip down to the meat and potatoes.

Chipping or flashing your Xbox 360

The very first thing that we need to check is if you have chipped or flashed your console. You cannot play burned Xbox 360 games on an original, unmodified console! I’m no expert on neither chipping nor flashing (I leave that to the lesser nerds to deal with), so I just had my console flashed by some guy at some slightly shady computer store in my city. I’m sure there’s an equally shady store somewhere in your city as well. However, it’s not supposed to be all that hard to modify it yourself if you are inclined to do so or if you are  simply strapped for cash. There is a collection of guides for the different types of Xboxes available here, but seriously, if you end up accidentally stabbing yourself in the kneecap while trying to pry your 360 open, I will take no responsibility whatsoever (I will however laugh and demand pictures).

Taking a closer look at your DVD burner

Next up, you need to make sure that you have a DVD burner capable of burning dual layer DVDs. Check what model your burner is and then check the product specification on the manufacturer’s website. You can usually find the make and model on the burner itself, but sometimes you might have to consult whatever papers came with your computer. Also, if you’re a super techno wiz capable of copying and pasting something into the terminal, you can run this command:

cdrecord -scanbus

Example output of cdrecord -scanbus

Most newer DVD burners are able to burn dual layer DVDs, so hopefully this won’t be a problem for you.

The right kind of DVDs

These dual layer DVDs that I was talking about are kind of super special in that they contain two layers (No really?!) separated by a thin metal sheet. Thanks to this technology, you can cram up to 9,4 gb of private photos (if you know what I mean) onto one of these suckers! The 360 is pretty picky about the quality of the disc. I’ve read about some cheapskate who tried to use lower quality discs and ended up with a broken console. I personally recommend using Verbatim DVD+R DL discs. They are fairly expensive, but it’s well worth it. Fixing a broken console probably costs more than $20 bucks, for which you could have gotten 10 good discs.

Checking for problems with your ISOs

The very last thing we need to check is whether or not you have a working ISO to burn. I’ve heard that interpol are actively hunting down geeks who spread knowledge on where to get copies of copyrighted software without the copyright owners permission, so I’m not going to point you to any specific place. I’m only going to say that I’ve heard something about some bay in Sweden where pirates like to hang out. It might be worth looking into… Anyway, once you have an ISO that you believe to be working, you should run a check to see if it’s been patched (that’s a good thing) and some other crap. Luckily there’s an excellent command line tool available for Linux called abgx360. Yeah yeah, I know command line tools are scary. But trust me, all you have to do is copy and paste a string of text into the terminal. Well, you still need to change a file path, but it’s really not that hard. Once you’ve downloaded the latest version of abgx360 and installed it (there’s a nice readme that takes you through it step by step) all you have to do is navigate to the folder containing the file abgx360 using the terminal and then enter:

./abgx360 -d /full/path/to/game.iso

In my case that would be:

./abgx360 -d ~/games/Xbox\ 360\ isos/Left\ 4\ Dead/Left\ 4\ Dead.iso

The backslashes are used to escape the spaces. If you have any spaces in your filename or path you need to do so. If done correctly it should do a crapload of tests on your iso, and hopefully it’ll check out as okay. If not, just follow the on-screen instructions. Usually all you have to do is run it using the autofix level 3 flag, as shown below:

./abgx360 -da /full/path/to/game.iso

Introducing BoxBlaze

Now, finally, on to why I’m writing this to begin with! You wanted a simple way of burning your Xbox 360 isos with a graphical user interface (or without one, if you prefer it that way), and that’s what I’ll give you. Let me present to you, BoxBlaze!

BoxBlaze Screenshot

BoxBlaze is written in bash. It makes use of growisofs for the actual burning action, using Zenity for the graphical user interface. The original script was written by Wicked, and after having gotten his permission I rewrote it and added a GUI to it. In it’s current state the script accepts any file type (so if you feel like wasting discs on trying to burn directories, .oggs, .debs or other useless things, be my guest). It just checks the filesize to see if it matches that of a patched Xbox 360 iso and spits out a warning if it doesn’t seem right. Also it doesn’t automatically detect your DVD burner, so you might have to go in and manually change /dev/dvd to wherever your burner resides.

BoxBlaze usage (GUI)

  1. Download the file at the end of this post and save it wherever you want it to be.
  2. (In Gnome) Go into that directory, right click the file BoxBlaze.sh, click on “Properties” , go into the “Permissions” tab and check the box that says “Allow executing file as program”.Alternatively you can open the terminal and type:
    chmod u+x /full/path/to/BoxBlaze.sh
  3. Double click the file and choose “Run”!

Then just follow the on-screen instructions. It’s really simple, I promise! The only thing you must be aware of is that the burning step takes a long time - sometimes up to an hour. Under no circumstances should you open the DVD burner tray while it’s still running!

BoxBlaze usage (Nautilus script)

Thanks to KSteve, Boxblaze can now work as a Nautilus script! All you have to do is place the script in ~/.gnome2/nautilus-scripts/ and the next time you want to burn an Xbox disc, all you have to do is right click the iso, go to scripts → boxblaze and it will lead you through the burn process.

BoxBlaze usage (CLI)

I told you there was a command line option too, didn’t I? It’s true. And it’s even easier than the graphical way (but you already knew that, didn’t you? You nerd!) The usage is as follows:

./BoxBlaze.sh --no-gui /full/path/to/game.iso

See, I told you it was easy! This way you can also track how long you have to wait before you can start enjoying some Dead Rising goodness!

Source Code

Being the geek you are, you of course want to see the source code. You can either download the script from the bottom of this post, or you can copy and paste the source from here.

Edit: Because Wordpress hates me, it has decided to add line breaks and crap to my code, so you can’t actually copy and paste this. However, the code is the same except for the line breaks, paragraphs and escaped HTML entities, so you can at least get an idea of what it looks like. If you want to read it properly, just download the script.

Toggle source code visibility

#!/bin/bash<br />
#<br />
# Auto check Xbox 360 ISO. If ISO size is equal to or greater than<br />
# 7572881408 we assume the ISO is patched and ready to burn with growisofs.<br />
#<br />
# Dependencies:<br />
# growisofs<br />
# zenity<br />
# sed (Ksteve adds)<br />
#<br />
# You may need to change /dev/dvd to your dvd burner.<br />
#<br />
# CLI version usage: ./BoxBlaze.sh --no-gui /full/path/to/game.iso<br />
#<br />
# Original script written by Wicked. Rewritten and guified by Nevon.<br />
# Modified for use as Nautilus Script & changed to display actual progress by Ksteve<br />
# Nevon, URL: http://www.blastfromthepast.se/<br />
# Wicked, blog URL: http://www1.roob.us:53535/blog/<br />
#</p>
<p>if [ ! $1 ] || [ $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ] ; then</p>
<p>    # Display welcome message.<br />
    zenity --info --timeout=2 --title="Welcome to BoxBlaze." --text="BoxBlaze is a tool used to burn Xbox 360 ISOs. \n\nOriginal script written by Wicked (www1.roob.us:53535/blog/).\nRewritten and guified by Nevon (www.blastfromthepast.se).\nModified for use as nautilus script by Ksteve.\n\nClick OK to continue."</p>
<p>    # Get the file to burn.<br />
    if [ $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ] ; then<br />
        # From Nautilus variable if called via nautilus-scripts.<br />
        FILENAME="`echo -e $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | tr -d "\n"`"<br />
    # Otherwise promt user for it.<br />
    else<br />
        FILENAME=$(zenity --file-selection --title="Please choose ISO to burn.");<br />
        if [ $? -ne 0 ] ; then<br />
          zenity --warning --title="No File Selected!" --text="No file selected - Aborting!"<br />
          exit<br />
        fi<br />
    fi</p>
<p>    # Get file extention.<br />
    FILEEXT=${FILENAME##*.}<br />
    FILETEMP="iso"</p>
<p>    # See if file extention is ISO.<br />
    if [ `echo $FILEEXT | tr [:upper:] [:lower:]` != `echo $FILETEMP | tr [:upper:] [:lower:]` ] ; then<br />
        # Ask user if (s)he wants to burn the non-ISO to DVD anyway.<br />
        zenity --question --title="Burn non-ISO File?" --text="$FILENAME is not an ISO file. \n\nWould you like to burn it to DVD anyway?"<br />
        if [ $? -ne 0 ] ; then<br />
            zenity --warning --title="Aborted!" --text="User aborted BoxBlaze."<br />
            exit<br />
        fi<br />
    fi</p>
<p>    # See if filesize indicates file is patched correctly (less than 7572881408 bytes = likely unpatched).<br />
    FILESIZE=$(stat -c%s "$FILENAME")<br />
    if [ $FILESIZE -lt 7572881408 ] ; then<br />
        # Ask user if (s)he wants to burn the possibly unpatched file to DVD anyway.<br />
        zenity --question --title="Unpatched File?" --text="Warning\! $FILENAME is less than 7572881408 bytes which means it is likely UNPATCHED. \nYou should manually check the file using abgx360 (http://abgx360.net/) before burning. \n\nWould you like to burn it to DVD anyway?"<br />
        if [ $? -ne 0 ]; then<br />
            zenity --warning --title="Aborted!" --text="User aborted BoxBlaze."<br />
            exit<br />
        fi<br />
    fi</p>
<p>    # If we made it here we should be good to go...<br />
    # Give user one last chance to change their mind.<br />
    zenity --question --title="Proceed?" --text="Ready to burn $FILENAME to DVD. \n\nClick OK to proceed or Cancel to abort."<br />
    if [ $? -eq 0 ]; then<br />
        # Burn ISO to /dev/dvd (edit if needed) and show progress bar.<br />
        growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/sr1="$FILENAME" 2>&1 |<br />
        sed -u -e 's/.*\([0-9 ]\+[0-9]\)\.[0-9]%).*/\1/' -e 's/^ \([0-9]\)/\1/' -e '/^00/ d' -e 's/^\([^0-9].*\)/# \1/' |<br />
        zenity --progress --auto-close --title="Progress..." --text="Burning $FILENAME to DVD.\n\nBe patient as this can take a while."</p>
<p>        # Check for success.<br />
        if [ $? -eq 0 ] ; then<br />
            zenity --info --title="Success!" --text="$FILENAME burned to DVD successfully\! \n\nThank you for using BoxBlaze\!"<br />
        # Check for Cancel clicked during burn.<br />
        elif [ $? -eq 1 ] ; then<br />
            zenity --warning --title="Aborted!" --text="User aborted BoxBlaze. \n\nDVD may be a coaster\!"<br />
        # Otherwise must have been an error.<br />
        else<br />
            zenity --error --title="FAILED!!!!"--text="Burn failed\!"<br />
        fi<br />
    # User changed their mind.<br />
    else<br />
        zenity --warning --title="Aborted!" --text="User aborted BoxBlaze."<br />
    fi</p>
<p>    exit</p>
<p>elif [ "$1" = "--no-gui" ]; then</p>
<p>    if [ ! $2 ] ; then<br />
        #If user didn't input path to game, display usage info and exit.<br />
        echo "Usage: $0 --no-gui /full/path/to/game.iso";<br />
        exit<br />
    else</p>
<p>        #Set path to FILENAME and check FILESIZE.<br />
        FILENAME=$2<br />
        FILESIZE=$(stat -c%s "$FILENAME")</p>
<p>        echo "Size of $FILENAME = $FILESIZE bytes.";</p>
<p>        #If filesize checks out, ask if the user wants to burn the ISO.<br />
        if [ $FILESIZE -ge 7572881408 ] ; then<br />
            echo "$FILENAME appears to be equal to or greater then 7572881408 would you like to burn it to a dvd now? (y/n)";</p>
<p>            read toburn<br />
            if  [ "$toburn" = "y" ]; then<br />
                #If yes, then burn ISO.<br />
                echo "I am burning $FILENAME";<br />
                growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/dvd="$FILENAME"<br />
                exit<br />
            else<br />
                #If no, then display message and exit.<br />
                echo "Image is good to burn whenever you want to.";<br />
                exit<br />
            fi<br />
        else<br />
            #If filesize doesn't check out, display warning message and ask<br />
            #user if (s)he really wants to continue.<br />
            echo "Warning\! $FILENAME appears to be smaller than 7572881408 bytes and is most likely unpatched. It is recommended that you inspect the file manually using abgx360 (http://abgx360.net/).";<br />
            echo "Are you sure you want to continue? (y/n)";<br />
            read sure</p>
<p>            #If yes, then burn ISO.<br />
            if  [ "$sure" = "y" ]; then<br />
                echo "I am burning $FILENAME";<br />
                growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/dvd="$FILENAME"<br />
                exit<br />
            else<br />
                #If no, then display message and exit.<br />
                echo "Image is good to burn whenever you want to.";<br />
                exit<br />
            fi</p>
<p>            exit<br />
        fi<br />
    fi<br />
fi

Download

You should probably know that I take absolutely no responsibility for anything that this script may do. If it scratches up all your discs - that’s your problem. If it shoots tiny pieces of plastic into your groin - that’s your serious problem. If it makes burning Xbox 360 isos much, much easier - then I guess I can take some credit. If you try it out and find that it doesn’t work or if you find a bug, please leave a comment here explaining what went wrong. That also applies if you have any suggestions for improving the script. Code is always appreciated, but even if you only have an idea, please contact me!

BoxBlaze v1.0.4 (Downloaded 185 times)

Old versions

  • 1.0.3 (Downloaded 1386 times)

Take me back to the top!

Tagged: , , in Code
Show/hide

Written by Tommy Brunn

Tommy Brunn is the author of blastfromthepast.se. Currently he is living pretty much as close to the north pole as you can get (Luleå, Sweden). He devotes his spare time to learning about programming, developing a FOSS point-and-click adventure game, and is currently studying software engineering at Luleå University of Technology.

There are 11 comments on this article:

  1. 4/07/2009Doogie said:

    Very helpfull post.
    thanks a million.

    -Doogie
    Brooklyn, NY

  2. 4/07/2009Doogie said:

    Hey,
    just wondering, how can i change the burning speed?
    I usually burn my isos at 8x,

    and Memorex, Sony DVD+R DL’s work as good too, and they’re cheaper.

    thanks again.

  3. 5/07/2009Tommy Brunn said:

    I suggest you have a look at the man page for growisofs. There is a –speed flag that you can change, but I’m not quite sure what setting would be appropriate for you. In the script I’m setting –speed to 2, which would be whatever speed was available with the currently mounted medium, closest to 2*1385KBps.

    Also, I should probably rewrite this script in Python. I just had a look at it for the first time in a couple of months, and it’s just super messy and there’s code duplication everywhere.

  4. 28/09/2009smuv said:

    This script ROCKS!!!! Thanks for your contribution…

  5. 3/10/2009Levent said:

    Thanks for sharing :)

  6. 1/11/2009Blue-K said:

    First: Many thanks for this, IMGBurn didn’t worked for me on WINE, and I hate Command Line :P. This is realy a Life Saver :D!

    Now, I think there’s something important missing: Vertify the Burn! Your ISO could be as clean as possible, you’ll still get banned if something went wrong during the burning process. Even if no Error is shown, it still could be possible that the Image was corrupted.

    So, could you add a Vertify to the Script? I’ve even searched for a Link, and found that one: http://www.infosecprojects.net/en/linuxtutorials/dvd-burn-verify.html . Not shure if this will work…I just found it…

    Thanks in Advance!

  7. 2/11/2009Tommy Brunn said:

    That could most certainly be done. If I can remember to, I will be sure to update the script as soon as I have the time.

  8. 28/11/2009Iceman said:

    Great app! Helps us noobs make the transition to ubuntu that much easier.

    As mentioned before, a speed selector would be ideal, as well as verify option. Great job, keep up the good work.

  9. 27/03/2010Malik said:

    I’ve a suggestion: what if you do this before popping up succes?

    #Success!
    (eject /dev/dvd*)
    zenity –info –title=”Success!” –text=”Burn successful\! Thank you for using BoxBlaze\!”

    It eject the disc ;9

    sorry for my english

  10. 1/05/2010B1B0r£ said:

    Looks like a fantastic app :D

    Does it default the booktype to DVD-ROM?

  11. 19/07/2010fergal said:

    after i burned games with this program and stick them in my xbox 360 they play but it shows that i have no achievemeants. Any help?

Write a comment