Arlo for the Psion Series 5, Series 5mx and Series
Before you upgrade to any newer version of Arlo, you MUST do a cold
reboot first because usually the device driver has been changed. Unfortunately,
the device driver cannot be unloaded other then by rebooting. See below
for an explanation.
Unzip the zip file (preserving the folder structure) on either drive C:
After installation you will find Arlo on the extra tab.
Running Arlo as the EPOC shell
If you are running a Linux distro that came with an Arlo config file (arlo.cfg),
then copy that file to one of the following directories:
Arlo will look for the arlo.cfg in the above directories, in order
After you've run Linux, EPOC will perform a cold start which may take
some time. To speed up the Linux reboot time, you can install Arlo to run
very early on EPOC startup. You need a Compact Flash (CF) card for this
Copy z:\system\data\wsini.ini to directory d:\system\data\
Edit d:\system\data\wsini.ini and replace the STARTUP
line by STARTUP d:\arlo\arlosh.exe.
The above assumes you've installed the arlo distro on drive D:.
Make sure that arlosh.exe, arlo.cfg and boot2nd.bin
are in directory d:\arlo.
On the next cold reboot you will see the Arlo boot list. If you select
EPOC or cancel the dialog with the boot list items you will continue to
start EPOC as per normal. Remember that you can start Arlo from the "extra's
bar" later on again.
Arlo is released under the GNU General Public License. See the file
copying for more info.
Arlo Config file
Starting from Arlo version 2.0, it's no longer needed to manually create
a config file because you can configure Arlo from its GUI. Developers may
still want to use the config file directly to use a few of the more advanced
options not supported by the GUI. Both arlo.app (the EIKON GUI App) and
arlo.exe (the console version of Arlo) detect and support these advanced
Arlo config parameters. See the supplied example.cfg for information on
Using the console version of Arlo
Developers may still want to use the old console version of Arlo. start
Booting Linux using console version of Arlo
Arlo presents a boot menu with the info it has found from the config file.
If no config file was present or could not be successfully interpreted
the text <no boot items> will be displayed.
The default boot item has been marked by *
For the duration of the timeout you can select another boot or menu item.
Advanced boot menu: Presents more detailed info on how Arlo has interpreted
the config file, including which file it has used.
Expert boot menu. This is basically the old Arlo. You can boot the "old"
way by loading a kernel image and optionally an initrd image. For example:
Although you can use this "manual" booting for all kernels (S5, S5mx and
Series 7), you cannot set any of the new options such as kernel load address
Building Arlo from source code
You'll need the Symbian ER5 SDK and Microsoft VC++ 5.0
Why the device driver cannot be unloaded
Installing the source code
unzip the source (with folder names) to the root of your epoc development
Building the driver
change directory to \arlo\ldd
call "makmake arlo marm"
call "nmake -f arlo.marm"
Building the GUI app
change directory to \arlo\app\group\aif
call "build all"
change directory to \arlo\app\group
call "makmake arloapp marm"
call "nmake -f arloapp.marm"
Building the console app
change directory to \arlo\exe
call "makmake arlo marm"
call "nmake -f arlo.marm"
Building the Shell App
change directory to \arlo\shell
call "makmake arloshell marm"
call "nmake -f arloshell.marm"
There is no public SDK/DDK for developing device drivers in EPOC. I
have reverse engineered the kernel interface to develop my own Arlo device
driver. The only thing that does not appear to work is unloading the driver.
As it stands I have no plans/intention to include this functionality because
at some point development on the device driver will stabelise. There is
no harm in the device driver being loaded all the time and does not cause
any restrictions. The only annoyance is that upgrading the device driver
requires a cold reboot to force the unload.
What's new in 2.1.0
Added an information dialog available under the help menu.
Upgraded to version 1.0.2 of boot2nd. This will fix a problem of corrupted
initrd when Arlo is used as a bootloader.
What's new in 2.0.1
Fixed a bug which only allowed a boot when a kernel + initrd were specified.
You can now boot a kernel without an initrd.
What's new in 2.0
Arlo has a GUI.
It is now available via the extra's bar. I've verified both the GUI and
the (updated) older console version works for Series 5, Series 5mx and
Series 7. For some reasons, the Arlo icon and the back ground is not showing
on the Series 5 whereas it works just fine for the other models.
You can configure your boot items via the GUI.
The GUI version of Arlo is compatible with the older console version (they
share most of the Arlo source code anyway).
The new GUI version of Arlo can also be run as the EPOC shell on startup.
Maybe I'll make it a configurable option to run the console version or
the GUI version on startup. For now I will assume that people want the
Not all of the Arlo config file options can be configured from the GUI.
This is intentional because the GUI version is intended for end users.
Developers can still manually change the arlo.cfg
they were used to.
The readme is in html.
What's new in 1.36
Fixed bug in parsing config file, filenames and bootdescriptions that were
too long crashed Arlo. I've changed their maxlength to 128 (used to be
64) and perform safe copies honoring the maxlength.
Disabled debug logging in the config file parsing
What's new in 1.35
Fixed initrd start address bug (if configured in the config file it would
relocate the kernel rather than the ramdisk to that address).
What's new in 1.34
New option in the expert menu: find physical memory areas mapped into virtual
address space. It will traverse every 4KB page in Arlo's 4GB address space
to see if there is anything mapped. Based on that it will spit out a table
with the physical areas and their sizes.
What's new in 1.33
Integrated patch from Tony Lindgren, the S5mx Linux kernel maintainer,
to have Arlo boot non-glued kernels using boot2nd. Thanks Tony!
As of 1.33, Arlo will default to using boot2nd for S5mx machines, this
can be overriden in the config file using "useboot2nd=no" or useboot2nd=false".
Note that the patch required changes in the driver, so S5mx people need
to cold reboot before installing Arlo.
What's new in 1.32
Arlo now reads dos & unix formatted config files correctly. Prior to
1.32 Arlo could not read unix formatted config files.
What's new in 1.31
Made 64 the default archnumber for the Series 7 which is the official number
assigned to use by Russel King. The old 16 was the archnumber for Brutus.
What's new in 1.30
Arlo has now support for Series 7 kernels. Hurray!
The driver implementation has changed for the Series 7. The Series 5 and
5mx implementations are not affected.
The memory size in "detect memory" is now always reported in KBs.
To speed up boot time, Arlo can now run as the EPOC shell, see the description
"Running Arlo as the EPOC shell" below. This is more of a nice development
feature than really being useful (I think). Said that, it does allow us
to display a PisLinux Logo _before_ the Psion/EPOC logo. That would be
quite cool :-)
Fixed the "o" parameter bug in the expert menu. It will now take everything
after the "o" as the boot parameters rather than the next token.
The arlo files may be stored in any of the following directories (searched
for in order listed):
If you run arlo.exe from the EPOC file manager, then arlo.cfg and boot2nd.bin
need to be present in one of the above directories. If you run arlo as
the EPOC shell, then you specify arlosh.exe in the wsini.ini (see
"Running Arlo as the EPOC shell" below) and arlo.exe, arlo.cfg and boot2nd.bin
need to be present in one of the above directories.
There is a new option in the export menu: "h" (for Hardware). You can use
this to find out where EPOC has mapped physical registers. In the early
days of Arlo, some one reported on the mailing list a handful of magic
EPOC internal addresses. EPOC maps I/O registers at virtual address 58000000.
Essentially the <h> command translates each virtual address starting
at 0x58000000 (with PAGE-size increments) to its physical address. I've
used this feature to find out the virtual address of the watchdog registers
on the Series 7 (SA-1100). According to the SA-1100 spec, the physical
location is fixed at 0x90000000. On the Series 7 the watchdog is enabled
and thus resets the machine if certain counters are not incremented on
a periodic basis. This caused a reset when disabling IRQs from Arlo because
the EPOC kernel can no longer update the watchdog counters. From the Arlo
driver, prior to bootstrapping, I reprogram the watchdog and set the next
deadline as far as possible in the future (about 20 minutes).
In addition to the normal boot package, Arlo now uses its own second stage
boot loader called: boot2nd.bin. It is mandatory for the Series 7, does
not work for the Series 5 and is optional for the Series 5mx.This has the
For the Series 7 the kernel should _not_ be glued with the boot package.
Arlo will transparently use boot2nd.bin. The kernel image should still
For the Series 5 there are no changes/differences in behaviour; everything
works as before. Current thinking is that I will not update boot2nd.bin
for the Series 5.
The use of boot2nd.bin is optional for the Series 5mx; by default there
are no changes/differences in behaviour. If you want to use boot2nd.bin
it for the Series 5mx you should not glue the kernel with the boot package
(the same rules for the Series 7 applies) and specify "useboot2nd=yes"
Arlo.cfg has a couple of new parameters if you want to use boot2nd.bin.
Consult the arlo.cfg on on how to use them.
What's new in 1.23
Fixed crash when the bootstring the in the config file > 64 chars
Fixed problem that the bootstring from config file gets truncated
The driver has _not_ changed compared to 1.22.
What's new in 1.22
Changed the heap size to be 512kb minimal and 16MB maximum. Arlo can now
be loaded in low memory conditions.
Fixed problem in page table size. Arlo can now correctly load up to 16MB
worth of kernel and initrd.
The driver has not changed compared to 1.21.
What's new in 1.21
What's new in 1.20
Boot option in the .cfg file didn't work, it does now.
Fixed stupid bug in booting on the Series 5mx.
Reinstated "o" option in the expert menu to manually set the boot option
Arlo now works for the Series 5, 5mx and the Series 7. I've tested the
Series 5 with a proper kernel and it boots ok. The series 5mx should still
work, although I've not retested. The Series 7 does not fully work yet.
The address translation works ok, but trying to boot some test kernel results
in a crash. It's probably to do with the way the MMU gets disabled. Maybe
I need to flush the cache first?!
For each of the three platforms we can use the exact same driver image.
The only platform difference is that the EKern.exe UIDs seem to differ.
Each time Arlo is started it will patch the driver file image with the
UIDs of the local kernel (if needed).
To avoid copyright issues, I've removed the line editor code that was copied
from the EPOC SDK and replaced it with a basic line editor I cooked up
Some other bit and bobs:
Added the processor id in the information screen
Added the 'r' (for detect RAM) option in the expert menu. This reports
the location of the RAM banks according to information in the EPOC kernel.
Hex numbers should entered as "0xabcd1234" and not abcd1234. Also made
sure that we don't peek at address 0 (I make typos all the time and they
get converted to 0)
What's new in 1.10
Arlo now uses a config file for automatic booting.
This version of Arlo supports both the Series 5 and the Series 5MX. Said
that, I don't own a Series 5 and could therefor only test it on a Series5mx.
Feedback is appreciated on using it with a Series5!
Note that the Series 5MX still has no kernel to boot, so it's pretty much
for developers only.
Added a screen with some hardware info (select (a)advanced item and next
About the author
Send suggestions or comments to: Peter
The latest versions of Arlo can be