Guide: LZDoom for RG351 Devices

Last updated: 19JUN2021 (see Changelog for details)

The ArkOS operating system for the RG351P now supports LZDoom, which opens up a bunch of possibilities when it comes to DOOM mods. So let’s look at how to set up your system for maximum fun. Note that LZDoom is supported on other devices that can run ArkOS, like the RK2020 and RGB10/RGB20, although these devices have only one analog stick, so it might not be as nice of an experience.

As of June 2021, LZDoom is also available on the 351ELEC firmware, which means you can use this guide for that operating system, too. See my 351ELEC section below.

Table of Contents
First things first
Acquire the retail WADs
Loading WADs onto your RG351P
One shell script to rule them all
Advanced features
351ELEC guide
Where to find DOOM mods
Tips and tricks


First things first

What is LZDoom? It is a source port of DOOM for the modern era, allowing you to play classic Doom games as well as games based on the DOOM engine (Heretic, HeXen, Strife, and Chex Quest), and most importantly, very advanced mods. LZDoom is forked from ZDoom, which was a DOOM program that was later replaced by the most current version, known as GZDoom. LZDoom stands for “Legacy ZDoom” and is optimized for older or less powerful hardware. Which makes it a great fit for the RG351P!

Why should you be excited about LZDoom? Well, for starters, the program itself has a lot of features that aren’t available in the current DOOM port (an emulated RetroArch core). You can fine-tune the user experience while playing the game, to include looking up and down, jumping, crouching, adjusting the HUD, and more. But perhaps more importantly, LZDoom has robust DOOM mod support, to include .pk3 files. This means that some of the most groundbreaking and impressive DOOM mods are now available on this tiny but mighty handheld device.

To date, only ArkOS has added LZDoom to its operating system, so if you want to play these games, you’ll need to load that operating system onto your device. If 351ELEC does add it to their firmware, I will update this guide. For more information on these different firmwares, check out my RG351P Firmware Comparison Guide.

Acquire the retails WADs

In order to run DOOM, you will need its retail .wad files. You can buy them for relatively cheap from or Steam. They frequently go on sale, and you can usually grab them for a couple bucks each. Once you have purchased these games, install them to your computer and extract the .wad files from their install location.

Loading WADs onto your RG351P

Loading .wad files directly onto your device is very simple. Plug the device’s microSD card into your computer, and then navigate to the EASYROMS/doom folder, and drop them in there. You can name the DOOM and DOOM 2 WAD files whatever you want, I just use Doom.wad and Doom2.wad. You can do the same with other games or official add-ons that use the DOOM engine, such as Heretic, HeXen, Strife, Chex Quest, TNT: Evilution and The Plutonia Experiment. When you boot up your device, navigate to the DOOM folder in your menu and you should see all of these files appear.

Furthermore, some DOOM mods are stored as .wad files, and these can be loaded directly as well. These include mods that use DOOM 1 as its base game, such as REKKR and SIGIL. These work because by default, when you try and load a DOOM WAD file in ZDoom, it will load the first DOOM game as its base and then load the mod file. This won’t work for DOOM mods that use DOOM II as its base game, but we’ll cover that in a second.

One shell script to rule them all

For all other games and mods that won’t boot directly in LZDoom, you will need to use a simple shell script to tell LZDoom how to load the game. It sounds intimidating, but it’s actually very simple. We’ll start with Brutal DOOM, a very popular mod that adds all sorts of visual and sound effects to the original DOOM games (plus a cubic ton of gore/mayhem).

  • To start, download the Brutal DOOM .pk3 file from ModDB and place it in the EASYROMS/doom folder on your microSD card.
  • Open up a text editor on your PC or Mac, such as Notepad or TextEdit. Paste in the following script:
/opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/brutalv21.pk3
  • In the script above, make sure that the “Doom.wad” name fits your DOOM WAD file name, and that the brutalv21.pk3 file name also matches.
  • Save the file as “Brutal” (in Windows, be sure to select “All Files (“.”)” under the “Save as type” option in the menu).
  • That’s it! When you boot up your device again, the Brutal file will be a bootable file.

For some mods, you will need to add other parts to this script. For example, if you have a DOOM mod that uses multiple files, like Aliens Eradication, you will want to stack the files into the code, like this:

/opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/ALIENSERADICATIONTC.pk3 /roms/doom/ERADICATIONMAPSET.wad

In general, you want to list the .pk3 or .wad file first, then the follow-on files.

But if you notice, Aliens Eradication has a .wad file. And if you remember from the previous section, the EASYROMS/doom folder is set to load any .wad file it finds in there. So that means if you put that .wad file in the main EASYROMS/doom folder, you’ll see “ERADICATIONMAPSET” as a bootable option in your menu, which a) is ugly and b) won’t boot anyway. So there’s an easy fix for this: make an EASYROMS/doom/mods folder, and put all of your unwanted .wad files in there. You will need to re-write your code to include the /mods/ directory in your code, like so:

/opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/ALIENSERADICATIONTC.pk3 /roms/doom/mods/ERADICATIONMAPSET.wad

Technically, you could do this for all of your mod files, to include your .pk3 files, in order to clean things up. That way, your main EASYROMS/doom folder will only contain the original retail DOOM wads, those that can boot directly in LZDoom (like Heretic, etc.), and your .sh files to boot each game. It’s all up to you — in the video above I only put the extraneous .wad files in the /mods/ folder, but since then I’ve actually moved all of my mod files into that folder. I’ve also been told that you can actually rename your .wad files to .pk3 files and they still boot up fine, so you could go that route, too.

Lastly, if you have any DOOM mods that use DOOM II as its base game, or mods that use extra mod files (like .deh or .bex files), you can account for those in the code. For example, let’s use Batman DOOM, which is based on DOOM II and also uses a .deh file.

/opt/lzdoom/lzdoom -iwad /roms/doom/Doom2.wad -file /roms/doom/mods/batman.wad -deh /roms/doom/mods/batman.deh

For more information on how to implement the command line parameters, check out this guide.

Advanced features

If you want to set up unique settings/configurations for each DOOM mod, you can create a unique .ini for each game in the .sh file. Here is the code:

-config /roms/doom/name-of-mod.ini 

Similarly, you can also create unique save locations for each mod, so that you don’t overwrite your saves between the various mods:

-savedir /home/ark/.config/lzdoom/name-of-mod_saves

So all told, this is what the full code would look like for something like Brutal Doom:

/opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/brutalv21.pk3 -config /roms/doom/Brutal_Doom.ini -savedir /home/ark/.config/lzdoom/Brutal_saves

351ELEC guide

In June 2021, 351ELEC added LZDoom support to their firmware. The gameplay is a bit choppier than on ArkOS, the graphics effects are muted, and the sound seems to be off, but overall it’s a nice addition to the firmware. The setup is a little different, so here we go:

After updating to the Crazy Hedgehog (June 2021) update or later, you will find a folder named “doom” in your GAMES partition. Within this folder, make two subfolders: “iwads” and “mods”. Inside your iwads folder, add your retail wads (such as Doom.wad, Heretic.wad, SIGIL.wad, etc.). In the mods folder, add your mods (typically in .wad or .pk3 format).

To boot these games, you will want to create a text file with a “.doom” file extension, and put it in the main doom folder. For example, to run the original DOOM, create a file named Doom.doom, and use a text editor to write this code inside the file:

-- end --

As you can see, the text is very simple: you just point the .doom file to the retail wad.

To run a mod, it’s a tiny bit more complicated, since you are pointing the .doom file to both the mod file and the retail wad that is used as the base game. You would use this format:

-- end --

And it’s as simple as that. If you have multiple mod files, just create a new “MOD=” line and stack them. The order of the mods does matter, so you may have to experiment to get it working properly.

Now in your 351ELEC menu you should see all of the .doom file you created, and can launch them directly from the menu.

One note is that the controls are not properly configured. I recommend going into the Joystick controls settings and adjusting the axes to fit this model:


You’ll also want to map the buttons themselves.

Where to find DOOM mods

This list is by no means comprehensive, but this is where I look for DOOM mods. There are also plenty of great YouTube videos out there that will showcase some of the most impressive mods.

ModDB (Doom mods sorted by most popular)
ModDB (Doom II mods sorted by most popular)
DOOMWorld ā€“ Best mods of the year lists
DOOMWorld (Doom mods)
DOOMWorld (Doom II mods)
DoomWorld community Top WADs of all time

DOOM games and mods used in my video:

Plutonia Experiment
Chex Quest (available via abandonware sites)
Brutal Doom Lite
Brutal Doom v21
Call of Doom (Vanilla)
Call of Doom (Brutal)
Aliens Eradication
DOOM: The Golden Souls
The Adventures of Square

Another recent discovery was the DOOM 4 Vanilla mod. This gives you all of the weapons, enemies, and items from the 2016 version of DOOM. It comes with a .wad and .deh file, just like Batman DOOM, and here is the ArkOS .sh script for the files (note that I put both the .wad and .deh files in the “mods” subfolder):

/opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/mods/D4V.wad -nodeh -deh /roms/doom/mods/D4V.deh

Tips and tricks

  • To disable looking up and down, go into Joystick Options, select the “opensimhardware” controller, then for Axis 4, turn it from “looking up/down” to “none”.
  • If you’re interested in combining all of your DOOM retail WADs (and SIGIL) into a single file, check out the handy WadSmoosh tool.

Playing a first-person shooter game like DOOM with dual analog sticks can sometimes be challenging. Luckily, there are a couple things you can do to enhance your gameplay experience:

  • Thumb grips – these thumb grips from Skull & Co are a cheap way to provide more precision to your gameplay.
  • External gamepad – although ArkOS doesn’t support external gamepads out of the box, LZDoom does. So if you use this 8BitDo USB wireless adapter (set in X-Input mode) and pair it with a modern gamepad like the PS4, Nintendo Switch Pro, or Xbox One controller, you can play this game with that controller instead.
  • 3D printed grip – you could buy one of these grips and convert your device into a true gamepad. Or if you have your own 3D printer, you could make your own.


– added 351ELEC instructions

– added WadSmoosh link

– added wording about changing .wad files to .pk3 files

– added instructions on how to turn off looking up and down

– published guide
– added DOOM 4 Vanilla mod

32 thoughts on “Guide: LZDoom for RG351 Devices

  1. Would you mind tweaking this guide for those of us who don’t care for Brutal Doom for whatever reason, but still want easy-ish WAD and mod loading?


    1. Hi, this guide should provide all the fundamental tools to add any WAD, not just Brutal Doom, which I used for an example at one point. Each of the shell scripts are applicable in other mods, and near the bottom of the post there are links to find all sorts of non-Brutal Doom mods. Let me know if there are any particular mods you’re looking for and I can see what I can do.


      1. Hey, is there anything we should know about 351elec changing to gzdoom?

        The DOOM 4 Vanilla mod sounds cool, but it seems to come with far more than just the files you mentioned – do we need them all? Do we just reference the two you mention but put the rest in the folder, or do they all now need referencing. I was going to try and experiment in the coming days, but if you already know/have an idea it would be a big help.

        351elec does not seem to have great deal of information on their website for ports and where to put what – I heard their wiki was good before, but it is no longer on Github and seems very empty now.


  2. Brutal Doom COD has actually triggered my PTSD! I’m a Vet, and I tinker on these handhelds to pass the time. I’ve spent most of today configuring various Doom mods through Retro Arch, then I got this bit of news in my inbox! I immediately followed Russ’ instructions, and got some awesome mods running (Army of Darkness Heretic was awesome.) I started testing a few, and then I tried COD Doom! The claxons blaring and all the shooting made my heart start racing, and I went into a panic attack! It’s funny now, but dang! It’s a good thing I’ve never played the real Call of Duty, I’d be back in the hospital! I’m going to try the Doom/Animal Crossing mod now… Maybe Isabelle won’t scare me too bad. Thanks Russ! I’m tickled as a pickle with all the things I can do on ArkOS, and I really appreciate your tutorial videos.


  3. Thanks so much for this guide! I can finally play chex quest 3, the best way to play chex quest.

    I’d never heard of the adventures of square. Looks interesting! May I ask how you loaded it in lzdoom? I tried creating an .sh file that looks like /opt/lzdoom/lzdoom -iwad /roms/doom/square1.pk3, but arkOS just spits me back out on the doom menu when I try to load it that way. I’m sure the sh file is pointing to the right file. Any tips? Thank you!


    1. Hi Daniel, here you go:

      /opt/lzdoom/lzdoom -iwad /roms/doom/Doom.wad -file /roms/doom/mods/square1.pk3

      It looks like you’re missing the reference to the retail Doom wad, which is still required to run a mod like this. Please note that I put the .pk3 file in a subfolder called “mods”, within the EASYROMS/doom folder, just to make things a little more organized.


      1. Thanks for the quick reply! I thought I had seen something on the Square website that said not to use the doom wad, so I guess that’s what I missing. Thanks again!


  4. I’ve been asking around for a Blood port, and thanks to this setup I’ve got one better! Bloom is an amalgam of Blood, Doom, and Awesomesauce on crack! I’ve been scouring Discord, YouTube, and the Doom modding websites since Russ posted this and I’ve stumbled upon some doozies! Animal Crossing, Mario Doom (several varieties there) even one where you can pull a Postal 2!! But the best by far has been the crossover of all crossovers where you can play as Caleb from Blood and the Doom Guy. Thanks Russ, if it wasn’t for your tutorials I’d probably be sitting in front of my laptop flaring up my carpal tunnel. I’m also proud of you for pulling 21 years! Good job!


  5. Do you have any tips on optimizing lzdoom? I’ve been playing through the Adventures of Square and loving it, but I’ve hit a part of the game where the lag is so extreme that I cannot proceed. I’ve tried messing with the video settings within the game, but to no avail. Any tips?


  6. I like your guides. Could tou tell me which DooM to buy on Steam? There are like 10 choices to make šŸ™‚ Ultimate DooM? Or a different one?


  7. My RG351P wont load any WADs anymore. all i get is a black screen with an undercore then it goes back to ark os main screen PLEASE HELP! Doom is my favorite game on here and now it wont work.


  8. I’m using ArkOS and following this guide, but, no “.sh” files are showing up as bootable.
    All files are where they’re supposed to be: EASYROMS/doom/
    DOOM and DOOM2 are the only ones to show up as bootable and both work properly.
    I tried changing extensions to “.bash” instead of “.sh”, but it’s the same result: nothing shows up.
    I can’t load mods, it refuses to see “.sh” files.


  9. Thanks for all the really easy to use guides & tips Russ!

    Would you know if there anyway to be able to add Rise of the Triad to the RG351P/M (I believe it is using a WAD but is based on Wolfenstein 3d)? Or would it be waiting for a port?


  10. Thanks for all your guides is there any chance of an update for 351elec as they added lzdoom support?


  11. Thanks for this guide! I have installed the 351elec version but unfortunately the changes I make to the controls and display never save. They remain while playing but once I shut down the RG351 then the configuration gets wiped and I have to redo them again. Is there any way to save changes?


    1. I have the same issue as jawn.

      Running 351elec on my RG351P. I have to setup controls/buttons every time I startup a game.

      Your tutorials are great by the way. I bought a 351P based on your in-depth review and comparisons. Thank you for your content!


  12. Great guide, I managed to get John Romero’s Sigil conversion with Buckethead’s sound track working following this on my RG351P running 351 Elec. This should work on Ark OS with a few tweaks to match the folder structure.

    For 351 Elec:

    In the folder “/GAMES/doom/mods” put the two files “SIGIL_v1_21.wad” and “SIGIL_SHREDS.wad”
    In the folder “/GAMES/doom” create a new text document, copy and paste the following:

    — end —

    Save the file as “Sigil.doom”


  13. If anyone can help with a little issue that I’m having regarding the doom port on a RGB10 Max 2 with retroOZ. I’ve been a doom fan for quite a really long time and I became really familiar with the LZDoom/GZDoom source ports as a result so I do know my way around how it works, though I came across an error I have never seen and I’m wondering if anyone else has ever gotten it.

    It’s an error that can be recreated(at least for me) and maybe someone here might have the answers to what might be wrong.

    This is the crash Log:
    *** Fatal Error ***
    Address not mapped to an object (signal 11)
    Address: 0x1c

    System: Linux retrooz 4.4.189 #2 SMP Sun Jul 25 13:19:59 AEST 2021 aarch64 aarch64 aarch64 GNU/Linux

    LZDoom version (0)
    Compiler version: 8.3.0

    Command line: /opt/lzdoom/lzdoom -iwad /roms/doom/DOOM2.WAD -config /roms/doom/mydoomtest.ini

    wad 0: lzdoom.pk3
    wad 1: game_support.pk3
    wad 2: DOOM2.WAD

    Not in a level.

    Executing: gdp –quiet –batch –command=gdp-respfile-Gg5D5R

    I get this issue when I start my .sh file with “-config *any config directory here and name of config*” and it should not do that. It should create the new config file wherever I specify it to but all it does is crash and boot me back out to the game select screen.

    I only noticed this issue when I tried to add the “-config” command line parameter and create a new config file for my mods since I like to have separate config files for all and I also like to load custom button mappings so that I can bind multiple actions to a single button like reload and use. But once I did add the parameter it gave me the error above.

    At first I thought that it might just have been one of the mods that weren’t compatible with whatever version of LZ this is but I did some trouble shooting and what I found was that it was the parameter that caused the issue. I loaded each of my mods individually and they all loaded just fine but once I added the “-config” parameter it would crash. Then to fully rule out that it wasn’t a mod, I tested it with just Doom 2 with this command line:

    /opt/lzdoom/lzdoom -iwad /roms/doom/DOOM2.WAD -config /roms/doom/mydoomtest.ini
    and without the -config parameter
    /opt/lzdoom/lzdoom -iwad /roms/doom/DOOM2.WAD

    The one with the parameter crashed and the one without loaded just fine so it has to be that parameter. Does anyone else get this issue? I’ve tired everything and I’ve searched everywhere for a small answer to try and fix this because without it I can’t have too many mods OR bind multiple actions to a single button OR double bind which is REALLY useful, dare I say, a necessity if anyone wants to play with a controller.


    1. After looking into this for a while, I found NO solution to it but I could still accomplish what I wanted to do which is to bind more comfortably a controller to play doom with. This allows me to play mods more comfortably, mods that require more bindings then usual and that have more weapons then usual. Usually scrolling through 50+ weapons of a mod in a really sticky situation really isn’t the best so I made it so that the more essential weapons are more easily accessible.

      If you love doom, if you love doom mods, if you love more complex doom mods then usual and want to have them on the go but don’t know how to deal with controls or you just cant find the right binding for them. This is what you have to do!

      TAKE NOTE this process was tested only on the RGB10 Max 2 with RetroOZ and the beta update installed. I’m sure the process is similar in other OSs and handhelds but you’ll have to test it (Don’t have others and can’t afford them lol).

      Create a “.txt” file and paste this in there:

      alias +userel “+use; +reload; +moveup”
      alias -userel “-use; -reload; -moveup”

      alias +jumpfly “+jump; +movedown”
      alias -jumpfly “-jump; -movedown”

      bind JOY3 “invprev”
      bind JOY2 “invnext”
      doublebind JOY2 “land”
      bind JOY4 “+userel”
      bind JOY1 “+jumpfly”

      bind JOY7 “weapprev”
      bind JOY8 “weapnext”

      bind JOY5 “+altattack”
      bind JOY6 “+attack”

      doublebind JOY18 “weapdrop”
      bind JOY17 “toggle cl_run”
      doublebind JOY17 “togglemap”

      bind JOY14 “invuse”
      bind JOY13 “MENU_MAIN”

      bind JOY9 “slot 1”
      doublebind JOY9 “slot 5”
      bind JOY10 “slot 2”
      doublebind JOY10 “slot 6”
      bind JOY12 “slot 3”
      doublebind JOY12 “slot 7”
      bind JOY11 “slot 4”
      doublebind JOY11 “slot 8”

      Then save the file and rename the file along with its extension to “autoexec.cfg”. Once that’s done insert your sd card into your computer and make a “mods” folder inside the doom folder and place the “autoexec.cfg” file inside it.

      Insert your sd card into your RGB10 Max 2 and start it. When it boots in go int “Tools” then go into “351files”. Press B until it can’t go back anymore then go into the folder called “home” then “odroid” then “.config” and finally go into “lzdoom”. In the lzdoom folder there should be a file called “lzdoom.ini”, select it with the A button and select the option “Edit as text”.

      Scroll down to where it says:



      Now edit these paths to this:
      Note: You can edit the files by moving the little text bar thingy to where you need to edit and pressing A,



      Once it’s edited to ths press B until it asked you to save and save the file then turn the console off. (if you reset the console with the reset button it resets your edit, well atleast it did that to me)

      When you are done you will be able to play doom mods with more complex schemes more comfortably with a controller! and if any mod has inventory items that can be used similar to Hexen and Heretic, those buttons are mapped as well.

      Y= Use + reload + fly up
      B= Jump + fly down
      X= Previous item
      A= Next Item
      Start = Use item
      Select = Main menu

      (Double press= Dp)
      Dpad Up = Weapon slot 1 Fists, Chainsaw
      Dp =Weapon slot 5 Rocket Launcher

      Dpad Down = Weapon slot 2 Pistol
      Dp =Weapon slot 6 Plasma Rifle

      Dpad Right = Weapon slot 3 Shotgun, Super Shotgun
      Dp =Weapon slot 7 BFG9000

      Dpad Left = Weapon slot 4 Chaingun
      Dp =Weapon slot 8

      Left Bumper = Previous weapon
      Right Bumper = Next weapon

      Left trigger = Alt Attack
      Right trigger = Attack

      L3 = Toggle run
      Dp = Toggle automap

      You can map R3 to a mods respective malee actions. This little tweek allows you to play games like Project Brutality, Brutal Doom, HXRTC Project Golden Edition Plus, ETC. ETC. way more comfortably along with the Heretic and Hexen games and many other mods and total conversions that have alt attacks and items that you can use.

      This tweek was more tailored to the “HXRTC Project Golden Edition Plus” mod since that’s my favorite mod. Mods with extra menus might not work properly(since if you bind a button to a menu the autoexec file will remap that button every time you start doom if it has been already mapped by the autoexec). In that case you would have to remake the autoexec.cfg to your mod that you want to play or just delete the autoexec file to freely remap controls again.


      1. I just used a wireless keyboard and mouse combo for my Doom workaround. It’s like a little controller with full keyboard, mouse touchpad functionality, and the usual controller layout like abxy and dual analog sticks. It’s how I entered IDKFA whenever I played a mod with lots of weapons like Abort and Russian Overkill.


  14. I love that you can do that! That’s actually rilly cool. Sadly I don’t have a wireless keyboard or mouse and I can’t really afford them where I live since everything is so expensive for us. I just sort of left this as a work around in case anyone were interested in doing it to play a bit more comfortably. Nothing beats good ol’ keyboard and mouse!

    It still sucks that I haven’t found a solution to the error it gives at the moment of adding the config parameter. If I could fine a solution to it and get it to work, then I could have in depth custom controls for every single one of my mods! But till then this was the best I could come up with haha


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s