Internet, UNIX, Video, Leisure…
Flashing an Amino Set Top Box
Amino company and resellers are really quiet about all the possibilities of the product.
I made a post some time ago about configuring the Amino to boot with DHCP and get the config through this or through DHCP.
This post was really popular and people began to ask me for firmware and informations on how to upgrade. Of course, I can’t provide anything like firmware. My reseller here is France is OK to sell it for 10€ for 4 Amino stb… Or you can find it somewhere on Internet. Please, don’t ask for it, I don’t have the latest nor the Opera firmware.
My last reseller sent me the 110 firmware while I had some dead STB. This is what I will use for this tutoriel.
So, the firmware comes as a tar file. Mine is A110-0.15.1-fresco-ami_wm-euro-subs.tar .
First, you need to create some directories. Please, note I’m actualy doing this on a PC running Ubuntu 7.10. The ~ stands for your home directory. It can be anything else you want, just change the paths accordinately. Of course, you don’t need to install things in /usr/local AT ALL, which is a really bad way to do things anyway.
-
cd ~
-
mkdir amino
-
cd amino
-
mkdir keys releases releases/A110 images
-
cd releases/A110
Now you can untar your image. Mine is just a .tar but yours could be a .tgz or .tar.gz. Then use option zxvf instead of xvf :
-
tar xvf ../../../A110-0.15.1-fresco-ami_wm-euro-subs.tar
This will create a directory 0.15.1-A110-fresco-ami_wm-subs-1. Go into it :
-
cd 0.15.1-A110-fresco-ami_wm-subs-1
You can now create and sign the two files you need for an upgrade : a bootstrap and an image.
The bootstrap
-
cd bootstrap
-
export CUSTOMER_KEY=`pwd`/../utils/keys/amino/KEY.private
-
export PATH=$PATH:`pwd`/../utils
-
./signbootstrap
The password is « markskey« . You will get a OK message and a new file : bootstrap.signed
-
Please enter passphrase for /home/prune/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/utils/keys/amino/KEY.private: Signed image written to ‘bootstrap.signed’
-
Multicast bootstrap image signed successfully: bootstrap.signed
Copy this new file to the image directory :
-
cp bootstrap.signed ~/amino/images
-
cd ..
The BONUS
Before we create the signed image of the real OS, I will show you how you can customize the boot procedure.
In the upgradeimage/imagecomponents directory lies all the files that will be packaged in the OS. Of course you can add few files. Don’t oversize the image or it won’t be able to be used.
Inside this directory you will find a splash.gif image file.

You can replace it by any GIF image. Don’t use an image bigger than the TV resolution, around 720×480. Replace the image but keep the same name ! Also, I think you have a limited number of possible colors, and the first color (?) will also be used for the backgroud around the image (can you confirm that ?)
So, have fun, change files, pre-program you amino by changing the config files… play around
The OS Image
If you have closed your terminal, re-set the CUSTOMER_KEY and PATH variables as above.
Now create and sign the image. As suggested, if you are making an Opera firmware upgrade, une -z for compressing the image
-
./signupgradeimage -z 0
-
Amino signupgradeimage Version : 1.42 $
-
Using DI of 0
-
Please enter passphrase for /home/prune/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/utils/keys/amino/KEY.private:
-
0
-
Generating flash contents list
-
….
-
FS created with packetsize of 4096
-
Warning: FS created using default values [serialNumber=1, dirsPerCycle=128]
-
cp mc2.mcfs ~/amino/images/
The DHCP Server
Yes, you will need one… But you already have my previous post on this : http://www.lecentre.net/blog/archives/119
See my config below as I finaly found out that my first config was « wrong«
The Multicast Server
This server can be anything… the one provided with the image or anyone, like VLC (yes, the video player…).
Go in the server directory and edit the
-
cd ~/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/server
-
vi mcastbootd.conf
Match the <mcast address> and <port number> with the ones from the DHCPD config file :
Here is my file :
-
[Server]
-
LogLevel=4
-
MulticastTTL=1
-
-
[Image bootstrap.signed]
-
MulticastIPAddress=239.255.230.52
-
MulticastUDPPort=11111
-
FileName=bootstrap.signed
-
Description=Linux bootstrap image
-
ImageType=1
-
SerialNumber=1
-
PacketSize=1456
-
CycleTime=0
-
-
[Filesystem mc2]
-
MulticastIPAddress=239.255.230.53
-
MulticastUDPPort=11111
-
ImageName=mc2
-
Description=upgrade filesystem
-
SerialNumber=2
-
DirsPerCycle=128
-
DataRate=256
-
CycleTime=0
Start the upgrade
Now you are ready to start. Go in the image directory and start the multicast software :
-
cd ~/amino/images
-
~/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/server/mcastbootd -D -C ~/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/server/mcastbootd.conf
-
16:04:12.788281 /home/prune/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/server/mcastbootd: Multicast boot/FS server daemon version 0.01.00
-
16:04:12.788591 /home/prune/amino/releases/A110/0.15.1-A110-fresco-ami_wm-subs-1/server/mcastbootd version 0.01.00 started
-
16:04:12.792805 239.255.230.52:11111 transmission of boot image ‘bootstrap.signed’ enabled
-
16:04:12.796833 239.255.230.53:11111 transmission of ‘mc2′ enabled
-
16:04:12.796895 239.255.230.53:11111 transmission of filesystem ‘mc2′ commenced
-
16:04:12.817127 239.255.230.52:11111 transmission of boot image ‘bootstrap.signed’ commenced
-
….
You can now plug in your set top box and see the magic…
Or not… ![]()
I just found out that the DHCP config file may not be right, depending on your Amni revision. While the original Vendor-Name is « aminoAMINET110mboot », this can change.
The solution I found was to trace the IP (bootP) packets on the lan and see what is going on. I use tcpdump for that.
This is also the point where I will describe my setup :
My host have 2 network card. Eth0 is connected to the local LAN and is using a dhcp client to get an IP. I’m connecting to it using SSH from my Mac, where I write this blog post at the same time.
The other network card, eth1, is connected to a switch where I plus the set top box. As the multicast packets of the mcastbootd only goes out by the first interface, eth0, I had to use a special command to configure eth1, so the multicast goes on it. Here is the whole config command.
Of course, if you are local on the host and have only one ethernet card, you won’t have to do this :
-
ifconfig eth1 10.20.0.2 netmask 255.255.252.0 up
-
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth1
The IP 10.20.0.2 is just part of the DHCP range I set up but outside the pool.
Then, to get the « vendor name » used by the set top box to ask for bootp/dhcp, I used tcpdump on eth1, then plugged in the amino and power it. Here is the result :
-
tcpdump -s 1024 -x -i eth1 -vv host not 239.255.230.52 and host not 239.255.230.53
-
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 1024 bytes
-
-
15:44:20.598588 IP (tos 0×0, ttl 64, id 1, offset 0, flags [none], proto: UDP (17), length: 328) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 00:00:00:00:00:00 (oui Unknown), length 300, xid 0x167eb0e7, Flags [ none ] (0×0000)
-
Client-Ethernet-Address 00:00:00:00:00:00 (oui Unknown)
-
Vendor-rfc1048 Extensions
-
Magic Cookie 0×33333333
-
DHCP-Message Option 53, length 1: Discover
-
Vendor-Class Option 60, length 26: "insecureAMINET11xmboot1.32"
-
Vendor-Option Option 43, length 24: 2.2.2.22.22.22.22.22.22.22.120.2.2.222.22.222.222.222.2.2.22.22.22.52
What is all this mess ?
In fact, you don’t care !
The only important part is Vendor-Class Option 60, length 26: « insecureAMINET11xmboot1.32″. This is what you have to set in your dhcpd.conf so it will find the amino, give it the IP and params so it can find the broadcast server.
So, here is my dhcpd.conf file, right from the Ubuntu dhcpd.conf + amino specials :
-
# cat /etc/dhcp3/dhcpd.conf | grep -v \#
-
-
ddns-update-style none;
-
option domain-name "example.org";
-
option domain-name-servers ns1.example.org, ns2.example.org;
-
default-lease-time 600;
-
max-lease-time 7200;
-
log-facility local7;
-
-
option space AMINO;
-
option AMINO.address code 1 = ip-address;
-
option AMINO.port code 2 = integer 16;
-
option AMINO.product code 3 = text;
-
option AMINO.option code 4 = text;
-
option AMINO.version code 5 = text;
-
option AMINO.middleware code 6 = ip-address;
-
option AMINO.mw_port code 7 = integer 16;
-
option AMINO.homepage code 8 = text;
-
option AMINO.dindex code 9 = integer 32;
-
option AMINO.dindex_min code 10 = integer 32;
-
option AMINO.dindex_page code 11 = text;
-
-
class "AmiNET110 all" {
-
match if (option vendor-class-identifier="Aminoaminet110fisys") or
-
((substring( option vendor-encapsulated-options, 2, 9)="aminet110")
-
and (substring(option vendor-encapsulated-options, 13, 5)="fisys"));
-
-
vendor-option-space AMINO;
-
option AMINO.homepage "http://tv.portal.com/tv.html";
-
}
-
-
class "AmiNET110 mboot"
-
{
-
match if (option vendor-class-identifier="insecureAMINET11xmboot1.32") or
-
((substring( option vendor-encapsulated-options, 2, 9)="AMINET110")
-
and (substring(option vendor-encapsulated-options, 13, 5)="mboot"));
-
-
vendor-option-space AMINO;
-
option AMINO.address 239.255.230.52;
-
option AMINO.port 11111;
-
}
-
-
class "AmiNET110 upgrd"
-
{
-
match if (option vendor-class-identifier="insecureAMINET11xupgrd1.32") or
-
((substring( option vendor-encapsulated-options,2,9)="aminet110")
-
and (substring( option vendor-encapsulated-options,13,5)="upgrd"));
-
-
vendor-option-space AMINO;
-
option AMINO.address 239.255.230.53;
-
option AMINO.port 11111;
-
}
-
-
shared-network IPTV {
-
subnet 10.20.0.0 netmask 255.255.252.0 {
-
option subnet-mask 255.255.252.0;
-
option domain-name "mydomain.net";
-
option domain-name-servers 10.16.12.10;
-
option routers 10.20.3.254;
-
option broadcast-address 10.20.3.255;
-
option ntp-servers 10.16.12.22;
-
pool {
-
range 10.20.2.70 10.20.2.250;
-
allow members of "all";
-
allow members of "AmiNET110 upgrd";
-
allow members of "AmiNET110 all";
-
allow members of "AmiNET110 mboot";
-
}
-
}
-
}
Now, restart dhcpd server, plug the amino and power it… and VOILA !!
I hope this is clear enough for you. Please comment if you need more details. Just remember it’s now 22:00 and I started all this at 19:00, so please don’t ask too newbie questions.
4 mai 2011 - 22:45
Salut,
Jai 8 amino A125 sans firmware. Jai downloader le firmware directement de chez Amino (celui de fresco). Lorsque je prend ta configuration dhcpd.conf en changeant quelque lignes pour A125 et le insecureAMINET125mboot1.37. Le server DHCP marche bien, mais lorsque je pars le multicast il me dit « Network is unreachable ».
Voici la configuration du dhcpd.conf :
ddns-update-style none;
option domain-name « example.org »;
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option space AMINO;
option AMINO.address code 1 = ip-address;
option AMINO.port code 2 = integer 16;
option AMINO.product code 3 = text;
option AMINO.option code 4 = text;
option AMINO.version code 5 = text;
option AMINO.middleware code 6 = ip-address;
option AMINO.mw_port code 7 = integer 16;
option AMINO.homepage code 8 = text;
option AMINO.dindex code 9 = integer 32;
option AMINO.dindex_min code 10 = integer 32;
option AMINO.dindex_page code 11 = text;
class « AmiNET125 all » {
match if (option vendor-class-identifier= »Aminoaminet125fisys ») or
((substring( option vendor-encapsulated-options, 2, 9)= »aminet125″)
and (substring(option vendor-encapsulated-options, 13, 5)= »fisys »));
vendor-option-space AMINO;
option AMINO.homepage « http://tv.portal.com/tv.html »;
}
class « AmiNET125 mboot »
{
match if (option vendor-class-identifier= »insecureAMINET125mboot1.37″) or
((substring( option vendor-encapsulated-options, 2, 9)= »AMINET110″)
and (substring(option vendor-encapsulated-options, 13, 5)= »mboot »));
vendor-option-space AMINO;
option AMINO.address 225.0.10.34;
option AMINO.port 11111;
}
class « AmiNET125 upgrd »
{
match if (option vendor-class-identifier= »insecureAMINET11xupgrd1.32″) or
((substring( option vendor-encapsulated-options,2,9)= »aminet125″)
and (substring( option vendor-encapsulated-options,13,5)= »upgrd »));
vendor-option-space AMINO;
option AMINO.address 225.0.10.34;
option AMINO.port 11111;
}
shared-network IPTV {
subnet 10.20.0.0 netmask 255.255.252.0 {
option subnet-mask 255.255.252.0;
option domain-name « mydomain.net »;
option domain-name-servers 10.16.12.10;
option routers 10.20.3.254;
option broadcast-address 10.20.3.255;
option ntp-servers 10.16.12.22;
pool {
range 10.20.2.70 10.20.2.250;
allow members of « AmiNET125 upgrd »;
allow members of « AmiNET125 all »;
allow members of « AmiNET125 mboot »;
}
}
}
Et Voici la configuration du mcastbootd.conf :
[Server]
LogLevel=4
[Image bootstrap.signed]
MulticastIPAddress=225.0.10.34
MulticastUDPPort=11111
FileName=bootstrap.signed
Description=Linux bootstrap image
ImageType=1
SerialNumber=1
PacketSize=1456
CycleTime=0
[Filesystem mc2]
MulticastIPAddress=225.0.10.34
MulticastUDPPort=11111
ImageName=mc2
Description=upgrade filesystem
SerialNumber=3
DirsPerCycle=128
DataRate=256
Mon interface ethernet eth0 est presentement a 10.20.2.5 255.255.252.0.
Merci de bien vouloir m’aider a resoudre mon probleme.
David Pivin
4 mai 2011 - 22:52
A la ligne : ((substring( option vendor-encapsulated-options, 2, 9)= »AMINET110″)
j’ai changer pour AMINET125 sans toutefois regler le probleme
21 juillet 2011 - 16:47
Where can I obtain the STBremoteconf tool?
26 août 2011 - 13:47
Hi,
I wanted to change configuration of Amino125, I have made Debug Cable (Can be used with Amino110, Amino125)
operates from 3.3v from Set Stop box connector pin1.
I can make more cables..
Thanks
suds
26 août 2011 - 13:52
Hi,
Can you explain how you build the cable and what you are able to do with it ?
Actualy the cable should be a simple serial cable… I used it to « full reset » the amino so it restart flashing after a new flashing failure…
I’d like to know if you have any information…
26 août 2011 - 13:52
From the firmware package which I don’t have…
26 août 2011 - 18:06
You need RS232 Driver IC such as MAX232 which works on Vcc 3.3V, (IC Datasheet will have Application Note, follow that), I used SMD IC to build the circuit, Connect Ping 14 from IC to Pin2 of, and Pin 13 to Pin 3 of, DB9 Female connector, Pin 11 of IC goes to Pin2 of connector (STB), and Pin12 of IC to Pin3 of connector (STB), Pin 1 on STB connector will provide 3.v and pin 4 connects to GND.
if you need ready made circuit with cable mail me sudhirmt@gmail.com
26 août 2011 - 20:03
Sudhir sent me the schematics for the serial cable to configure the Amino A125. find it here : http://www.lecentre.net/blog/archives/1305
26 août 2011 - 21:37
Hi I am having problems with an amino a125 I have changed the splash.gif using telnet, and now the amino is not working, it only shows me Loading… again and again. Have you had any similar problem. I will appreciate any help.
Regards, Andres