<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.sharpfin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Philipp</id>
	<title>Sharpfin - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.sharpfin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Philipp"/>
	<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Special:Contributions/Philipp"/>
	<updated>2026-04-23T11:37:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.4</generator>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Sleep_timer&amp;diff=229</id>
		<title>Sleep timer</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Sleep_timer&amp;diff=229"/>
		<updated>2025-06-08T14:18:27Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;When I first base patched my LOGIK IR100&amp;#039;s there were values in the config files for the sleep timer. After upgrading to the v 257-a-421-a-057 service pack, the original unlimited sleep timer is now limited to three hours, and I can find no reference to it in the config file. Any help to increase the sleep timer would be appreciated.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When I first base patched my LOGIK IR100&#039;s there were values in the config files for the sleep timer. After upgrading to the v 257-a-421-a-057 service pack, the original unlimited sleep timer is now limited to three hours, and I can find no reference to it in the config file. Any help to increase the sleep timer would be appreciated.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Config_Options_List&amp;diff=228</id>
		<title>Config Options List</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Config_Options_List&amp;diff=228"/>
		<updated>2025-06-08T13:46:04Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Config options for different firmware versions =&lt;br /&gt;
&lt;br /&gt;
Some of these are already documented on: [[Config.txt_File]]&lt;br /&gt;
&lt;br /&gt;
Once you know the purpose and can document usage, please update: [[Config.txt_File]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FW v257-a-421-a-091 - Feb 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FW v257-a-421-a-057 - Jan 2008&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Config_Options_List&amp;diff=227</id>
		<title>Config Options List</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Config_Options_List&amp;diff=227"/>
		<updated>2025-06-08T13:45:38Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;= Config options for different firmware versions =  Some of these are already documented on: Config.txt_File  Once you know the purpose and can document usage, please update: Config.txt_File   FW v257-a-421-a-091 - Feb 2008 FW v257-a-421-a-057 - Jan 2008&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Config options for different firmware versions =&lt;br /&gt;
&lt;br /&gt;
Some of these are already documented on: [[Config.txt_File]]&lt;br /&gt;
&lt;br /&gt;
Once you know the purpose and can document usage, please update: [[Config.txt_File]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FW v257-a-421-a-091 - Feb 2008&lt;br /&gt;
FW v257-a-421-a-057 - Jan 2008&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Vistron_MX-200i&amp;diff=226</id>
		<title>Vistron MX-200i</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Vistron_MX-200i&amp;diff=226"/>
		<updated>2025-06-08T13:38:39Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;Introduction ---- This radio first appeared in 2008 and was sold by eBuyer UK.    References  ---- http://logikir100.tripod.com/Vistron.htm&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Introduction&lt;br /&gt;
----&lt;br /&gt;
This radio first appeared in 2008 and was sold by eBuyer UK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
http://logikir100.tripod.com/Vistron.htm&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=OpenOCD&amp;diff=225</id>
		<title>OpenOCD</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=OpenOCD&amp;diff=225"/>
		<updated>2025-06-08T13:31:46Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== &amp;lt;big&amp;gt;Barracuda module debug over JTAG using OpenOCD&amp;lt;/big&amp;gt; ==   It was tested on  Ubuntu 10.04 LTS and  reciva-kernel-v24080215+00.tar.bz2 kernel pack.  ===OpenOCD installation and testing ===  To install openocd in Ubuntu enter command   sudo apt-get install openocd   Create openocd config file &amp;#039;&amp;#039;JTAGdebug.cfg&amp;#039;&amp;#039; with this contents:   #  # Parallel port wiggler (many clones available) on port 0xc8b8  #  telnet_port 4444  gdb_port 3333  interface parport  parport_port 0...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;big&amp;gt;Barracuda module debug over JTAG using OpenOCD&amp;lt;/big&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It was tested on  Ubuntu 10.04 LTS and  reciva-kernel-v24080215+00.tar.bz2 kernel pack.&lt;br /&gt;
&lt;br /&gt;
===OpenOCD installation and testing ===&lt;br /&gt;
&lt;br /&gt;
To install openocd in Ubuntu enter command&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install openocd &lt;br /&gt;
&lt;br /&gt;
Create openocd config file &#039;&#039;JTAGdebug.cfg&#039;&#039; with this contents:&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # Parallel port wiggler (many clones available) on port 0xc8b8&lt;br /&gt;
 #&lt;br /&gt;
 telnet_port 4444&lt;br /&gt;
 gdb_port 3333&lt;br /&gt;
 interface parport&lt;br /&gt;
 parport_port 0&lt;br /&gt;
 parport_cable wiggler&lt;br /&gt;
 # Found on the &#039;TinCanTools&#039; Hammer board.&lt;br /&gt;
 if { [info exists CHIPNAME] } {&lt;br /&gt;
   set  _CHIPNAME $CHIPNAME&lt;br /&gt;
   } else {&lt;br /&gt;
   set  _CHIPNAME s3c2410&lt;br /&gt;
  }&lt;br /&gt;
  if { [info exists ENDIAN] } {&lt;br /&gt;
   set  _ENDIAN $ENDIAN&lt;br /&gt;
  } else {&lt;br /&gt;
  # This config file was defaulting to big endian..&lt;br /&gt;
   set  _ENDIAN little&lt;br /&gt;
 }&lt;br /&gt;
 if { [info exists CPUTAPID] } {&lt;br /&gt;
   set  _CPUTAPID $CPUTAPID&lt;br /&gt;
 } else {&lt;br /&gt;
   set  _CPUTAPID 0xffffffff&lt;br /&gt;
 }&lt;br /&gt;
 #use combined on interfaces or targets that cannot set TRST/SRST separately&lt;br /&gt;
 reset_config trst_and_srst&lt;br /&gt;
 #jtag scan chain&lt;br /&gt;
 jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID&lt;br /&gt;
 set _TARGETNAME $_CHIPNAME.cpu&lt;br /&gt;
 target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm920t&lt;br /&gt;
 $_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x30800000 -work-area-size  0x20000 -work-area-backup 0&lt;br /&gt;
 # speed up memory downloads&lt;br /&gt;
 arm7_9 fast_memory_access enable&lt;br /&gt;
 arm7_9 dcc_downloads enable&lt;br /&gt;
 nand device s3c2410 s3c2410.cpu&lt;br /&gt;
 &lt;br /&gt;
Now it&#039;s possible to  test OpenOCD.&lt;br /&gt;
Connect JTAG cable to pc, power on radio and execute command in a shell &lt;br /&gt;
&lt;br /&gt;
 sudo openocd -f JTAGdebug.cfg &lt;br /&gt;
&lt;br /&gt;
You should see the output&lt;br /&gt;
&lt;br /&gt;
 Open On-Chip Debugger 0.3.1 (2010-01-18-14:21)&lt;br /&gt;
 $URL$&lt;br /&gt;
 For bug reports, read&lt;br /&gt;
 	http://openocd.berlios.de/doc/doxygen/bugs.html&lt;br /&gt;
 parport port = 0&lt;br /&gt;
 trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain&lt;br /&gt;
 fast memory access is enabled&lt;br /&gt;
 dcc downloads are enabled&lt;br /&gt;
 Error: Translation from jtag_speed to khz not implemented&lt;br /&gt;
 Info : interface specific clock speed value 0&lt;br /&gt;
 Info : JTAG tap: s3c2410.cpu tap/device found: 0x0032409d (mfg: 0x04e, part: 0x0324, ver: 0x0)&lt;br /&gt;
 Warn : JTAG tap: s3c2410.cpu       UNEXPECTED: 0x0032409d (mfg: 0x04e, part: 0x0324, ver: 0x0)&lt;br /&gt;
 Error: JTAG tap: s3c2410.cpu  expected 1 of 1: 0xffffffff (mfg: 0x7ff, part: 0xffff, ver: 0xf)&lt;br /&gt;
 Error: Trying to use configured scan chain anyway...&lt;br /&gt;
 Warn : Bypassing JTAG setup events due to errors&lt;br /&gt;
 Info : Embedded ICE version 2&lt;br /&gt;
 &lt;br /&gt;
Now you can halt radio connecting to OpenOCD with telnet in a new shell window&lt;br /&gt;
&lt;br /&gt;
 telnet localhost 4444 &lt;br /&gt;
&lt;br /&gt;
Telnet output : &lt;br /&gt;
&lt;br /&gt;
 Code: [Select]&lt;br /&gt;
 Trying ::1...&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 Open On-Chip Debugger&lt;br /&gt;
 &amp;gt; &lt;br /&gt;
&lt;br /&gt;
In telnet terminal enter command &#039;&#039;halt&#039;&#039; and terminal writes&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; halt&lt;br /&gt;
 target state: halted&lt;br /&gt;
 target halted in ARM state due to debug-request, current mode: Supervisor&lt;br /&gt;
 cpsr: 0x20000093 pc: 0xc0015c74&lt;br /&gt;
 MMU: enabled, D-Cache: enabled, I-Cache: enabled&lt;br /&gt;
 &amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Now we can power off radio and go to second part.&lt;br /&gt;
&lt;br /&gt;
=== Kernel with debug options compiling ===&lt;br /&gt;
&lt;br /&gt;
To see debugging symbols in gdb shell you need compiled kernel with debug option enabled.&lt;br /&gt;
In reciva kernel Makefile you need to add -g option after -Wall in these 2 lines:&lt;br /&gt;
&lt;br /&gt;
 HOSTCFLAGS	= -Wall &#039;&#039;&#039;-g&#039;&#039;&#039; -Wstrict-prototypes -O2 -fomit-frame-pointer&lt;br /&gt;
 CFLAGS := $(CPPFLAGS) -Wall &#039;&#039;&#039;-g&#039;&#039;&#039; -Wstrict-prototypes -Wno-trigraphs -O2 \&lt;br /&gt;
 &lt;br /&gt;
Now you can rebuild kernel.&lt;br /&gt;
After build you need a file vmlinux from reciva kernel root dir it&#039;s about 32M size.&lt;br /&gt;
&lt;br /&gt;
If your radio kernel version is the same like kernel source you can skip information below how to flash new kernel to radio.&lt;br /&gt;
&lt;br /&gt;
=== New  kernel flashing ===&lt;br /&gt;
&lt;br /&gt;
The kernel file zImage could be found in folder &lt;br /&gt;
/arch/arm/boot&lt;br /&gt;
&lt;br /&gt;
To be suitable for sharpflash you need to use getpart utility&lt;br /&gt;
&lt;br /&gt;
 getpart zImage 0 fc000 kernel.new&lt;br /&gt;
&lt;br /&gt;
After this kernel.new size must be the same like kernel-mtd.bin from backups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &amp;lt;big&amp;gt;Before doing this be sure you have backup of your radio working kernel partition.&amp;lt;/big&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now turn on radio and sharpflash the new kernel.&lt;br /&gt;
&lt;br /&gt;
 sharpflash -w kernel.new 4000 fc000 &lt;br /&gt;
When flashing is finished restart radio.&lt;br /&gt;
If you have changed  in kernel source something, for debugging must use apropriate vmlinux file. &lt;br /&gt;
&lt;br /&gt;
=== Debugging with gdb ===&lt;br /&gt;
Turn on radio.&lt;br /&gt;
Run OpenOCD and  telnet. Enter &#039;&#039;halt&#039;&#039; command in telnet window when radio display lights up.&lt;br /&gt;
Now we need to run gdb in a new shell window. &lt;br /&gt;
&lt;br /&gt;
 root@reciva-dev:/home/shared# gdb&lt;br /&gt;
&lt;br /&gt;
Gdb output screen&lt;br /&gt;
&lt;br /&gt;
  GNU gdb (GDB) 7.1-ubuntu&lt;br /&gt;
 Copyright (C) 2010 Free Software Foundation, Inc.&lt;br /&gt;
 License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
 This is free software: you are free to change and redistribute it.&lt;br /&gt;
 There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
 and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
 This GDB was configured as &amp;quot;i486-linux-gnu&amp;quot;.&lt;br /&gt;
 For bug reporting instructions, please see:&lt;br /&gt;
 &amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
 (gdb)  &lt;br /&gt;
&lt;br /&gt;
to load debug symbols in gdb environment execute &#039;&#039;file vmlinux&#039;&#039;.(I have copied vmlinux file to the place where  execute gdb in my case /home/shared) &lt;br /&gt;
&lt;br /&gt;
 (gdb)file vmlinux &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
 Reading symbols from /home/shared/gdb/vmlinux...done.&lt;br /&gt;
 (gdb) &lt;br /&gt;
&lt;br /&gt;
Now connect to OpenOCD enter in gdb this command&lt;br /&gt;
&lt;br /&gt;
 target remote localhost:3333 &lt;br /&gt;
&lt;br /&gt;
Output :&lt;br /&gt;
&lt;br /&gt;
 Remote debugging using localhost:3333&lt;br /&gt;
 0xc01b8d28 in cr_alignment ()&lt;br /&gt;
 (gdb) &lt;br /&gt;
&lt;br /&gt;
Now i&#039;ts possible to get kernel variable values.&lt;br /&gt;
&lt;br /&gt;
Below it&#039;s shown method how to get dmesg printout using log_buf variable.&lt;br /&gt;
&lt;br /&gt;
===Gdb script for dmesg===&lt;br /&gt;
&lt;br /&gt;
You can simply copy paste this script to gdb environment&lt;br /&gt;
&lt;br /&gt;
 define dmesg&lt;br /&gt;
 set $i=0&lt;br /&gt;
 set $end_idx=(log_end -1)&lt;br /&gt;
  while($i&amp;lt; logged_chars)&lt;br /&gt;
  printf&amp;quot;%c&amp;quot;,log_buf[$i]&lt;br /&gt;
  set $i=$i+1&lt;br /&gt;
  end&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
At the end you need to press enter.&lt;br /&gt;
Output :&lt;br /&gt;
&lt;br /&gt;
 (gdb) define dmesg&lt;br /&gt;
 Type commands for definition of &amp;quot;dmesg&amp;quot;.&lt;br /&gt;
 End with a line saying just &amp;quot;end&amp;quot;.&lt;br /&gt;
 &amp;gt;set $i=0&lt;br /&gt;
 &amp;gt;set $end_idx=(log_end -1)&lt;br /&gt;
  &amp;gt;while($i&amp;lt; logged_chars)&lt;br /&gt;
  &amp;gt;printf&amp;quot;%c&amp;quot;,log_buf[$i]&lt;br /&gt;
  &amp;gt;set $i=$i+1&lt;br /&gt;
  &amp;gt;end&lt;br /&gt;
 &amp;gt;end&lt;br /&gt;
 (gdb) &lt;br /&gt;
&lt;br /&gt;
Now execute &#039;&#039;dmesg&#039;&#039; command in gdb shell&lt;br /&gt;
&lt;br /&gt;
 (gdb) dmesg&lt;br /&gt;
 &amp;lt;4&amp;gt;Linux version 2.4.26-vrs1-bast2 (pb@bob.internal.reciva.com) (gcc version 3.3.4) v24080215+00 #1 Fri Feb 15 17:33:14 GMT 2008&lt;br /&gt;
 &amp;lt;4&amp;gt;CPU: Arm920Tid(wb) revision 0&lt;br /&gt;
 &amp;lt;4&amp;gt;Machine: Reciva-IR2&lt;br /&gt;
 &amp;lt;4&amp;gt;HWCONFIG values are: 15 1f (1013)&lt;br /&gt;
 &amp;lt;4&amp;gt;S3C2410: 202.800000 MHz, memory 101.400000 MHz, pclk 50.700000 MHz&lt;br /&gt;
 &amp;lt;4&amp;gt;On node 0 totalpages: 8192&lt;br /&gt;
 &amp;lt;4&amp;gt;zone(0): 8192 pages.&lt;br /&gt;
 &amp;lt;4&amp;gt;zone(1): 0 pages.&lt;br /&gt;
 &amp;lt;4&amp;gt;zone(2): 0 pages.&lt;br /&gt;
 &amp;lt;4&amp;gt;Kernel command line: root=/dev/mtdblock2 ro init=/linuxrc&lt;br /&gt;
 &amp;lt;7&amp;gt;Relocating machine vectors to 0xffff0000&lt;br /&gt;
 &amp;lt;4&amp;gt;irq: clearing subpending status 00000402&lt;br /&gt;
 &amp;lt;4&amp;gt;bast_init_irq:&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: TCNTB4 at d890003c&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: tcon=00000000, tcnt should be f799&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: about to configure timer4&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: stopping timer&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: adding interrupt&lt;br /&gt;
 &amp;lt;4&amp;gt;setup_timer: starting timer&lt;br /&gt;
 &amp;lt;4&amp;gt;Calibrating delay loop (skipped)... 101.17 BogoMIPS&lt;br /&gt;
 &amp;lt;6&amp;gt;Memory: 32MB = 32MB total&lt;br /&gt;
 ---Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit---&lt;br /&gt;
&lt;br /&gt;
Pressing enter you can read all dmesg.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=224</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=224"/>
		<updated>2025-06-08T13:11:14Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Roadmap|Roadmap&lt;br /&gt;
** Repository|Repository&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** Quickstart|Quickstart&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=223</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=223"/>
		<updated>2025-06-08T13:10:34Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Roadmap|Roadmap&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=222</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=222"/>
		<updated>2025-06-08T13:10:08Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=221</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=MediaWiki:Sidebar&amp;diff=221"/>
		<updated>2025-06-08T13:09:48Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot; * navigation ** mainpage|mainpage-description ** Introduction|Introduction ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Introduction|[[Introduction]]&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Crosscompiling&amp;diff=220</id>
		<title>Crosscompiling</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Crosscompiling&amp;diff=220"/>
		<updated>2025-06-08T13:05:58Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple &amp;quot;Hello World&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Assuming you have built the [[Toolchain]], made the changes to your environment including PATH and carried out the instructions [[Enabling Login]], a simple &amp;quot;Hello World!&amp;quot; program is easy to build.&lt;br /&gt;
&lt;br /&gt;
For the sake of this example we&#039;ll set up an alias to the crosscompiler.&lt;br /&gt;
&lt;br /&gt;
   alias cc=arm-9tdmi-linux-gnu-gcc&lt;br /&gt;
&lt;br /&gt;
In a working directory, create a file called helloworld.c&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
   #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
   main() {&lt;br /&gt;
        printf(&amp;quot;Hello world&lt;br /&gt;
&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now to build the program.&lt;br /&gt;
&lt;br /&gt;
   cc -o helloworld helloworld.c&lt;br /&gt;
&lt;br /&gt;
You should now have an executable program called &amp;quot;helloworld&amp;quot; of about 7000 bytes. Move this onto your radio and execute it from the command line. You should see &amp;quot;Hello world&amp;quot; and the prompt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039; We haven&#039;t used the radio specific library here so your text will not appear on the radio&#039;s display, just the telnet session.&lt;br /&gt;
&lt;br /&gt;
At this point you&#039;ve proved the crosscompiling tools are working fine.&lt;br /&gt;
&lt;br /&gt;
{{NoteBox|&amp;lt;b&amp;gt;Hint:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;if you get the error &#039;crt*.o: No such file: No such file or directory&#039; while compiling the hello world program, you could try to solve this problem by issuing following commands:&lt;br /&gt;
   # strace -f -o foo.log arm-9tdmi-linux-gnu-gcc helloworld.c&lt;br /&gt;
the log file will contain the information where the compiler is looking for the missing file(s).&lt;br /&gt;
Then you can add some symbolic links if you find the file(s) elsewhere. E.g. this command could solve the problem w/ missing crt1.o:&lt;br /&gt;
   # for i in `ls $RESULT_TOP/build/arm-9tdmi-linux-gnu/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/crt*.o`;do ln -s &lt;br /&gt;
   #   $i $RESULT_TOP/build/arm-9tdmi-linux-gnu/gcc-4.1.0-glibc-2.3.2/gcc-core-prefix/lib/gcc-lib/arm-9tdmi-linux-gnu/3.3.6/${i##*/};done&lt;br /&gt;
but you may need to adapt it slightly}}&lt;br /&gt;
&lt;br /&gt;
== Building packages ==&lt;br /&gt;
&lt;br /&gt;
Crosscompiling is easy these days, even with most autoconf/automake configurable packages. The following works for me&lt;br /&gt;
&lt;br /&gt;
* Create a directory where you want to put the fresh compiled libraries, header files and binaries. For example &lt;br /&gt;
&lt;br /&gt;
  # mkdir -p /tmp/reciva/root&lt;br /&gt;
&lt;br /&gt;
* Make sure the toolchains &#039;bin&#039; dir is in your path (as described in [[Toolchain]])&lt;br /&gt;
&lt;br /&gt;
* Configure the package, using the cross compiler and optional previously installed libraries and headers&lt;br /&gt;
&lt;br /&gt;
  # export LDFLAGS=&amp;quot;-L/tmp/reciva/root/lib&amp;quot; &lt;br /&gt;
  # export CPPFLAGS=&amp;quot;-I/tmp-reciva/root/include&amp;quot; &lt;br /&gt;
  # ./configure --prefix=/tmp/reciva/root/ --host=arm-softfloat-linux-gnu &amp;quot;$@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If all went well, configure should finish without problems, and you can now build and install the software&lt;br /&gt;
&lt;br /&gt;
  # make&lt;br /&gt;
  # make install&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Watchdog&amp;diff=219</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Watchdog&amp;diff=219"/>
		<updated>2025-06-08T13:05:38Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The [[Libreciva]] dog function provides control of the processor&#039;s watchdog timer.&lt;br /&gt;
&lt;br /&gt;
In order to use the library function, you must include the header file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;dog.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== int dog_init()  and  void dog_exit() ===&lt;br /&gt;
&lt;br /&gt;
These functions are used to initialise and shut down the watchdog system. dog_init() returns true on success, or false if there was an error accessing the hardware.&lt;br /&gt;
&lt;br /&gt;
Note that dog_exit() simply leaves the watchdog in whatever state it has been set - if you want the dog disabled, you must call dog_disable() before calling dog_exit().&lt;br /&gt;
&lt;br /&gt;
=== int dog_enable()  and  int dog_disable() ===&lt;br /&gt;
&lt;br /&gt;
These functions are used to enable and disable the watchdog.  the functions return 0 on success, or -1 if there is an error accessing the hardware.&lt;br /&gt;
&lt;br /&gt;
=== int dog_isenabled() ===&lt;br /&gt;
&lt;br /&gt;
This function reports the current enable (true) or disable (false) state of the watchdog.  Note that this function simply reports which dog_enable() / dog_disable() function was last called from this application.  It is not possible to read the enabled status back from the hardware.&lt;br /&gt;
&lt;br /&gt;
=== int dog_kick() ===&lt;br /&gt;
&lt;br /&gt;
This function is used to kick the dog.  It returns 0 on success, or -1 if there has been a problem accessing the hardware.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=ALMHX_AlarmClockTime&amp;diff=218</id>
		<title>ALMHX AlarmClockTime</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=ALMHX_AlarmClockTime&amp;diff=218"/>
		<updated>2025-06-08T13:04:46Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ALMHX_AlarmClockTime.txt =&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
&lt;br /&gt;
The file contains a number of rows (one for each alarm).  Rows are in the format:&lt;br /&gt;
&lt;br /&gt;
 hh:mm t cccccccccc w a o&lt;br /&gt;
&lt;br /&gt;
* hh - Hours to display for alarm time&lt;br /&gt;
* mm - Minutes to display for alarm time&lt;br /&gt;
* d  - Day of week (0=Sunday, 1=Monday)&lt;br /&gt;
* cc - Unix time for alarm time (assumes always on GMT!)&lt;br /&gt;
* w  - 0=Once, 2=Daily, 3=Weekly, 4=WeekDays, 5=Weekends &lt;br /&gt;
* a  - 0=Buzzer, 1=presetAlarm.txt, 2=presetAlarm1.txt ...&lt;br /&gt;
* o  - 0=off, 1=on&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 07:15 5 1209712500 4 1 1&lt;br /&gt;
&lt;br /&gt;
Alarm On and set for 07:15, at Midnight on Sunday/Monday, Alarm Once, and use Buzzer.&lt;br /&gt;
&lt;br /&gt;
== Direct Manipulation of File ==&lt;br /&gt;
&lt;br /&gt;
If this file is edited outside of the ir application (e.g. directly from a webserver), the ir application ignores the changes.&lt;br /&gt;
&lt;br /&gt;
Following an external update, the ir application must be restarted, either by a radio reboot, or by using &amp;quot;init 3 ; init 2&amp;quot; in a script.&lt;br /&gt;
&lt;br /&gt;
== Calculating cccccccccccc ==&lt;br /&gt;
&lt;br /&gt;
The radio uses and maintains this number to work out the actual alarm time, so it must be correctly calculated each time it is changed / updated.  This means that we need to know the current time.&lt;br /&gt;
&lt;br /&gt;
The ir application performs its own time management, and the operating system time is left back in the 1970s.  There is no rdate program compiled into the OS.&lt;br /&gt;
&lt;br /&gt;
Be aware that the radio ignores timezones, and actually adjusts GMT when the clocks move on/back - consequently, the cccccc value is the local time, and is not GMT as would normally be expected.&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;sys/time.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  main(int argc, char *argv[]) {&lt;br /&gt;
         time_t t ;&lt;br /&gt;
         if (argc!=2) {&lt;br /&gt;
                 printf(&amp;quot;ctime cccccccc&lt;br /&gt;
&amp;quot;) ;&lt;br /&gt;
                 exit(1) ;&lt;br /&gt;
         } &lt;br /&gt;
        t=atoi(argv[1]) ;&lt;br /&gt;
        printf(&amp;quot;%s&amp;quot;,ctime(&amp;amp;t));&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
The above function returns the following, when supplied with 1209712500:&lt;br /&gt;
&lt;br /&gt;
On the Radio: Fri May  2 07:15:00 2008&lt;br /&gt;
Under Cygwin: Fri May  2 08:15:00 2008&lt;br /&gt;
&lt;br /&gt;
== Writing a web-based Alarm management page ==&lt;br /&gt;
&lt;br /&gt;
In order to write a web-based Alarm manager script, the following tools are needed:&lt;br /&gt;
&lt;br /&gt;
* Get correct network time (rdate type program)&lt;br /&gt;
* Convert hh:mm to a real unix time (undoing timezone adjustments done by the ir application)&lt;br /&gt;
* Identify the current day (0=Sunday ...)&lt;br /&gt;
&lt;br /&gt;
Alternatively, a web-based Alarm manager application could be written instead of a script.  In this case, some steps shouldbe avoided to prevent repeated ntp requests (perhaps by managing the synchronisation of the unix clock)&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Whistlist&amp;diff=217</id>
		<title>Whistlist</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Whistlist&amp;diff=217"/>
		<updated>2025-06-08T13:00:51Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Redirected page to Wishlist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Wishlist]]&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Magicbox&amp;diff=216</id>
		<title>Magicbox</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Magicbox&amp;diff=216"/>
		<updated>2025-06-08T13:00:26Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Redirected page to IMP Magicbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IMP_Magicbox]]&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=IMP&amp;diff=215</id>
		<title>IMP</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=IMP&amp;diff=215"/>
		<updated>2025-06-08T12:59:55Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Redirected page to IMP Magicbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IMP_Magicbox]]&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=AE&amp;diff=214</id>
		<title>AE</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=AE&amp;diff=214"/>
		<updated>2025-06-08T12:58:33Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Redirected page to AE Wifi Radio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AE_Wifi_Radio]]&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=IR100&amp;diff=213</id>
		<title>IR100</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=IR100&amp;diff=213"/>
		<updated>2025-06-08T12:54:59Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Radio ==&lt;br /&gt;
&lt;br /&gt;
The IR100 contains 3 PCBs, the power converter PCB, the Amplifier PCB and the barracuda host PCB, into which is plugged a barracuda module, and a RaLink USB wi-fi adaptor.&lt;br /&gt;
&lt;br /&gt;
There is an [http://logikir100.tripod.com/Logik.htm external owners site] with lots of IR-100 information.&lt;br /&gt;
&lt;br /&gt;
== Radio Firmware/Software Modifications ==&lt;br /&gt;
&lt;br /&gt;
Several owners have used this project to change the firmware on their radios, providing additional features over the official upgrades.  (Jan 30th 2008, new official firmware released, check this first before deciding if you need to  update your radio using these methods). See [[Changing Your Radio]] ,  [[Enabling Login]] and [[Changing Firmware]].&lt;br /&gt;
&lt;br /&gt;
== Radio Hardware Modifications ==&lt;br /&gt;
&lt;br /&gt;
A number of modifications have been undertaken on the IR100:&lt;br /&gt;
&lt;br /&gt;
* [[Installing an External USB Socket on the IR100]]&lt;br /&gt;
* [[Moving the USB Wi-Fi dongle on the IR100]] and an alternative USB socket&lt;br /&gt;
* [[Modifying time delay when starting a track]] Removing the &amp;quot;thump&amp;quot; when radio changes tracks and fixes the missing few seconds at the start of a track. There may be a (partial?) [[Config.txt File]] software fix for this problem.&lt;br /&gt;
* [[IR100 Back Rotation]] Fix the speaker hum !&lt;br /&gt;
* [[Installing an Ethernet LAN connection]], external USB memory stick connection, mains switch&lt;br /&gt;
&lt;br /&gt;
Still to be documented on Wiki:&lt;br /&gt;
&lt;br /&gt;
* [[Installing an Infrared Remote Control on the IR100]]&lt;br /&gt;
* [[Adding a JTAG Port to the Barracuda Module]]&lt;br /&gt;
* [[Adding a Serial Port to the Barracuda Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Please add other modification documentation, such as enabling the USB memory stick for &amp;quot;demo mode&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
== PCB ==&lt;br /&gt;
&lt;br /&gt;
The Barracuda PCB plugs into a motherboard within the IR100.  The following image is a composite, showing both the top and bottom PCB layers.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:IR100-Motherboard-Layers.jpg|thumb|IR100 Motherboard]]&lt;br /&gt;
| [[Image:Ir100_608mr7.pcb.jpg|thumb|IR100 Motherboard version:608mr7]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connectors ==&lt;br /&gt;
&lt;br /&gt;
There are three edge connectors on the Barracuda board (J1, J2 and J3).  The pin naming in the image below has been extracted from the IR100 motherboard silk screen.&lt;br /&gt;
&lt;br /&gt;
[Image:Barracuda-Information.xls|thumb|Barracuda ICD Spreadsheet]&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
There is something odd about the way the USB connection has been made.  The IR100 connects the USB D+ and D- with 22R series resistors, and also, each pin has a 15K resistor, which is also connected to ground on the IR100 motherboard.&lt;br /&gt;
&lt;br /&gt;
A bus-master requires two 15K pull-down resistors.&lt;br /&gt;
&lt;br /&gt;
For a bus slave there should be a 1K5 pull-up to 3V3 on either the D+ or D- line (depending on the requested bus speed).&lt;br /&gt;
&lt;br /&gt;
It is possible that this single port can be configured as either a master or a slave (Pin M10 is DP1/PDP0, Pin N11 is DN1/PDN0 - i.e. DP1&amp;amp;DN1 are the Host Functions and PDP0&amp;amp;PDN0 are the Slave Functions, sharing the same pins).&lt;br /&gt;
&lt;br /&gt;
From the source code reciva_usb.c file, it suggests that the driver powers up with the USB interface in slave mode - this should be detectable by monitoring the USB VCC during power-up.&lt;br /&gt;
&lt;br /&gt;
It seems likely that the convoluted interconnection is provided so that the Barracuda module can be plugged into a test configuration, which configures the port as a slave.  It seems unlikely that this will be possible in the radio without hardware modification to the motherboard.&lt;br /&gt;
&lt;br /&gt;
Some time during boot, the USB VCC should appear, once the Barracuda board has detected (somehow) that the motherboard wants a USB master.&lt;br /&gt;
&lt;br /&gt;
Some things to try:&lt;br /&gt;
&lt;br /&gt;
* Monitor the USB VCC during reset, and demonstrate that it does infact &#039;come up&#039; during the boot sequence.&lt;br /&gt;
* Power up the barracuda module without the motherboard, without the 15K pull-downs and without the additional ground connections, to try and force the board to be a slave.&lt;br /&gt;
&lt;br /&gt;
[https://www.sharpfin.org/images/b/be/Barracuda-Schematic-Top.pdf Barracuda-IR100-USB.pdf]&lt;br /&gt;
&lt;br /&gt;
==The Software==&lt;br /&gt;
&lt;br /&gt;
The IR100 is running Familiar Linux, and incorporates the Helix DNA player (neptune 1.3) with some additional plugins and a top-level client, written by Reciva.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building A Debug Board ==&lt;br /&gt;
&lt;br /&gt;
[[DebugBoard]] Building a Debug Board&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:IR100_with_USB-hub.jpg&amp;diff=212</id>
		<title>File:IR100 with USB-hub.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:IR100_with_USB-hub.jpg&amp;diff=212"/>
		<updated>2025-06-08T12:53:34Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Config.txt_File&amp;diff=211</id>
		<title>Config.txt File</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Config.txt_File&amp;diff=211"/>
		<updated>2025-06-08T12:51:51Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
[[Radios]] have a configuration file, which is named ConfigXXXX.txt, where XXXX is the hardware number of the radio, which you can find with &#039;Configure / Version&#039;.  For example, an IR-100 is 1012.  The [[Radios]] page has known hardware numbers. &lt;br /&gt;
&lt;br /&gt;
The configuration file can be changed to enable/disable certain features.  Some of these  may add a feature a particular user finds useful. For example, those using the alarm clock may prefer it to be higher in the menu structure, or the history feature might be useful to get back to a recent stream.&lt;br /&gt;
 &lt;br /&gt;
In addition to enabling / disabling features, the configuration file also tells the radio which software modules to load.  These include network drivers, lcd display drivers etc...  If you change these entries, it is possible that your radio will be unable to boot / unable to start the network / unable to display things on the lcd display.  &#039;&#039;&#039;please DO NOT simply copy another config.txt file over the top of yours, hoping that your radio will take on the features of another manufacturers - the answer is that it will, including trying to load the wrong drivers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Apply the sharpfin patch, see [[Enabling Login]]&lt;br /&gt;
 Basic concepts and introduction, see [[Changing Your Radio]]&lt;br /&gt;
* Log into the radio using telnet (user &amp;amp; password = admin)&lt;br /&gt;
* Look in(&#039;&#039;&#039;&#039;chdir /root/hwconfig/&#039;&#039;&#039;&#039;) /root or /root/hwconfig, depending on the current firmware version of your radio&lt;br /&gt;
* Find your configxxxx.txt file (The xxxx is the Hardware Id, which you can find in &#039;Configure / Version&#039;)&lt;br /&gt;
* Look in it and others in the same directory to work out what modifications you wish to make (such as enabling alarms)&lt;br /&gt;
* Issue the command&#039;&#039;&#039; &#039;mount / -orw,remount&#039; &#039;&#039;&#039; to unprotect the partition&lt;br /&gt;
* Edit the configxxxx.txt file with&#039;&#039;&#039; &#039;vi configxxxx.txt&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; &#039;i&#039; &#039;&#039;&#039; to enter Insert mode&lt;br /&gt;
* Double Check your edits&lt;br /&gt;
* Now treble check them!&lt;br /&gt;
* Hit &amp;lt;ESC&amp;gt; to leave Insert Mode and enter Command mode&lt;br /&gt;
* &#039;&#039;&#039; &#039;:w&amp;lt;ENTER&amp;gt;&#039; &#039;&#039;&#039; To write current file (if you are sure and wish to save it)&lt;br /&gt;
* &#039;&#039;&#039; &#039;:q!&amp;lt;ENTER&amp;gt;&#039; &#039;&#039;&#039; To exit &#039;vi&#039; &lt;br /&gt;
* Write protect the drive with&#039;&#039;&#039; &#039;sync;mount / -oro,remount&#039; &#039;&#039;&#039;&lt;br /&gt;
* Reboot the radio&lt;br /&gt;
&lt;br /&gt;
== Config Overriding ==&lt;br /&gt;
&lt;br /&gt;
The radio application (ir) has the ability to make ammendments to the configuration dynamically.  Basically what happens is that on launch, the file /root/config/DSCO_ConfigOverride.txt is downloaded by a function in &#039;&#039;dynconfig_override.c&#039;&#039; and created (if it does not already exist).  The ir application then exits, and it is left for the operating system to re-launch it.&lt;br /&gt;
&lt;br /&gt;
For more information on this file, see the [[Config Override]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example Config Files for different Radios ==&lt;br /&gt;
&lt;br /&gt;
Click here [[config_example_files]] for example config files with comments and add your config file if it&#039;s missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comments on the Config.txt file ==&lt;br /&gt;
&lt;br /&gt;
Simbo has provided a list of lots of the Configuration Variables here: [[Config_Options_List]]&lt;br /&gt;
&lt;br /&gt;
Space for commented config.txt file  (can others add information as it is known and relevant comments please )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Confirmed edits to /root/hwconfig/config1012.txt on a Logik IR-100:&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 stations-history&lt;br /&gt;
 on&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 history-size&lt;br /&gt;
 20&lt;br /&gt;
&lt;br /&gt;
...shows the last 20 streams listened to. History info gets stored in: /root/config/PRE_history.ini, and persists after a power cycle.&lt;br /&gt;
&lt;br /&gt;
NOTE:  I tried adjusting the value to 99, with no apparent ill effects with FW.257-a-421-a-057, the file has added a couple of stations quite happily.  I know it is a bit of a jump, but might it be possible for Sharpfin to use this file, or another in the same part of the device, as an on board directory of 500 or so popular stations?&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 stations-substring-search&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...Adds &#039;SEARCH&#039; to the stations menu, allowing searches for stations via letters of the alphabet.(m0aur)&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 sleep-timer-upper-limit&lt;br /&gt;
 86400&lt;br /&gt;
&lt;br /&gt;
...increases sleep timer to a maximum of 24 hours. Value in seconds (M0AUR).&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 sleep-timer-increment&lt;br /&gt;
 300&lt;br /&gt;
&lt;br /&gt;
...Adjusts sleep timer increments in seconds. 300 secs = 5 minute increments.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 standby-text&lt;br /&gt;
 YourTextHere&lt;br /&gt;
&lt;br /&gt;
...replaces the &#039;Reciva Radio&#039; text in standby. Use of UTF-8 encoded text in the private which is defined as special symbols in the reciva LCD driver (published by reciva as part of the GPL kernel source) is known to brick the radio. Other non-ASCII text may also have this effect, and there may be a length limit, so you should have a backup strategy before venturing beyond simple short ASCII sequences. &#039;Internet Radio&#039; which is 14 charaters is OK. DO NOT APPLY STANDBY TEXT EDIT TO MAGICBOX IMP ADAPT TO REPLACE 4 LARGE CLOCK CHARACTERS, IT WILL BRICK THE RADIO! (m0aur)&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 clock-in-config-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...adds Clock in Configure. - Did not appear when used with Firmware v. 257-a-421-a-057&lt;br /&gt;
Showing here with FW 257-a-421-a-057 [[User:Simbo99|Simbo99]] 22:58, 20 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Setting this string to OFF places the alarm and sleep functions on the top menu.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 clock-dst-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...adds DST(„Daylight Saving Time“) On/Off to Clock menu.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 clock-format-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...lets you change from 24hr to AM/PM - Clock will default to 24hr if there is an active alarm.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 stereo-mode&lt;br /&gt;
 stereo&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 stereo-mode-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...this adds a Stereo menu in Configure with Stereo/Mono options.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 aux-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...this adds the menu option Equalisation under Configure &amp;amp; with Treble -14/+14 and Bass -14/+14 - it did nothing to the treble/bass on an IR-100 &amp;amp; IPdio (962).&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 contrast-menu&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...adds the menu option Contrast under Configure &amp;amp; counts up/down with the wheel, doesn&#039;t alter the contrast on an IR-100.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 volume-control&lt;br /&gt;
 on&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 initial-volume&lt;br /&gt;
 28&lt;br /&gt;
&lt;br /&gt;
...whilst listening to a stream, the wheel alters the volume with an on-screen graphic to indicate min/max Volume. Not much use on an IR-100 - which has the audio-amp volume knob. - Easiest to use with &#039;official&#039; volume control at maximum and use select knob only - NOTE: This leads to a slightly audible background crackle even at low volumes.&lt;br /&gt;
&lt;br /&gt;
I believe the &#039;initial-volume&#039; refers to the volume of the alarm, changing the value does not appear to have any effect on an IR100 with 257-a-421-a-057 FW.&lt;br /&gt;
&lt;br /&gt;
The initial-volume is the software-volume level when the radio comes out of standby.[[User:Simbo99|Simbo99]] 22:58, 20 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
I have tried initial-volume values from 28 to 99 on both the LOGIK IR100 and the Tangent Quattro, Both radios still come out of standby at the last used volume level. Despite the scroll wheel showing a varying volume graphic on the Tangent Quattro, it does not actually alter the volume. (M0AUR)&lt;br /&gt;
&lt;br /&gt;
Volume control displays graphic on Revo Pico but does not behave as expected. Volume is not affected unless 0 is selected which mutes the radio --[[User:Goldstien|Goldstien]] 15:39, 24 June 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
( Please edit / add more configuration options as known )&lt;br /&gt;
&lt;br /&gt;
From &amp;quot;grepping&amp;quot; through the configxxx.txt &lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 alarm-clock&lt;br /&gt;
 off|config1|config2|no-alarm&lt;br /&gt;
&lt;br /&gt;
off: no clock at all, no-alarm: just a clock, no alarm. config1&amp;amp;config2: alarm clock functionality enabled, difference between settings not yet known. &#039;&#039;&#039;config1&#039; = alarm goes straight to radio without buzzer (IR100 257-a-421-a-057)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 number-of-alarms&lt;br /&gt;
 5&lt;br /&gt;
&lt;br /&gt;
This allows you to set multiple alarms and choose weekdays, weekends etc and whether to use the buzzer or a preset - NOTE - Any selected preset must remain tuned to the same channel for the alarm to continue to tune to radio - NOTE - All alarms start with a buzzer, which sounds for 20-30 secs and then tunes to a chosen station, which as to be selected from the 5 presets - Can be switched at will by pressing the Select knob.  Buzzer can be disabled by using the alarm clock/config2 hack above.&lt;br /&gt;
&lt;br /&gt;
Increasing the number of alarms in the config1012.txt file of the Logik IR100 running the latest 057 service pack will no longer work, as upon station update, the Reciva site edits the value back down to 2, which is now standard.&lt;br /&gt;
I think it is done via a &#039;watchdog s3c2410&#039; command within the /mnt/ramfs/tmp/config1012.txt config1012.txt.withparams. It can also be found in the /mnt/config/DSCO_ConfigOverride.txt, and the /root/config/DSCO_ConfigOverride.txt files. These all seem to link to the /proc/s3c2410-break-hack file. So Reciva seem to be actively blocking some edits. (M0AUR)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 power-on-select-key&lt;br /&gt;
 on&lt;br /&gt;
This allows a select spinner press to turn the radio on. Does not work on Tangent Quattro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 menu-timeout&lt;br /&gt;
 10&lt;br /&gt;
This controls how long a menu is shown before dropping back to the now playing screen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 back-as-menu-item&lt;br /&gt;
 on&lt;br /&gt;
Adds a &amp;lt;&amp;lt;Back option to every menu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 presets-as-menu-items&lt;br /&gt;
 on&lt;br /&gt;
This shows Twelve presets in &amp;quot;Stations&amp;quot; list. To store a station on any of the presets: Listen to a stream, go (back) to &amp;quot;Stations&amp;quot;, scroll to an empty preset, long press on the select spinner - station stored. To listen to a station on these new presets: From &amp;quot;Stations&amp;quot;, scroll to desired preset then short press select spinner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 off-in-main-menu&lt;br /&gt;
 on&lt;br /&gt;
This shows an off option at the bottom of the main menu&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 long-select-action&lt;br /&gt;
 popup&lt;br /&gt;
&lt;br /&gt;
This enables an equalizer menu accessed with a long press of the Select button - Note this is visible but completely non functional on the IR100.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Option:&lt;br /&gt;
  snooze-key&lt;br /&gt;
  power&lt;br /&gt;
&lt;br /&gt;
This option produces a 5min snooze on the alarm when you press the power key, I guess it could be mapped elsewhere, the alarm time shown in brackets advances 5 mins to confirm,&lt;br /&gt;
&lt;br /&gt;
IR100 - FW v.257-a-421-a-057 - This works, but makes switching off by the power button rather difficult - the radio seems confused as to what it is supposed to do, press once and sound will break up for about 30secs before powering down.&lt;br /&gt;
&lt;br /&gt;
I also detected a change in the level (up) of the transformer hum while trying this one.&lt;br /&gt;
&lt;br /&gt;
  Option:&lt;br /&gt;
  force-metadata&lt;br /&gt;
  on&lt;br /&gt;
&lt;br /&gt;
Depending on the station/stream etc, you get track and artist information as a scrolling line - directly after the &amp;quot;REAL ENABLED&amp;quot; it will read something like &amp;quot;REAL ENABLED - xxxx artist - xxx track&amp;quot;   This is &#039;&#039;totally&#039;&#039; dependent on the stream/podcast station and what they decide to transmit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 show-busy-bar-on-samba-scan&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Shows a busy-bar instead of filenames as samba scans a share for media.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 acpoweron-state&lt;br /&gt;
 network&lt;br /&gt;
&lt;br /&gt;
...on AC power on, radio connects to network then goes to standby, staying connected to network. Only works if &amp;quot;Go to standby after power cycle&amp;quot; under &#039;My Radios&#039; on the Reciva site is *unticked*. This option is good in the event of an overnight power cut, it stops the radio connecting to the last played station upon reconnection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 dynamic-mute&lt;br /&gt;
 off&lt;br /&gt;
&lt;br /&gt;
...&#039;&#039;(Can someone else try this &amp;amp; confirm then delete/edit this text - taa [[User:Simbo99|Simbo99]])&#039;&#039; Keeps the audio amp powered on, so doesn&#039;t chop first few seconds of MP3s. Makes [[Modifying time delay when starting a track]] redundant?&lt;br /&gt;
&lt;br /&gt;
Cannot comment on mp3s from PC, but it does look like it works! I logged onto an MP3 stream which plays a set file (beatlesradio.com) before you get the stream and for the first time, had the whole thing! (Tried on two IR100s with 257-a-421-a-057 FW.).   A comment on the discussion list from &amp;quot;JohnR&amp;quot; suggests that this is not a total fix; it alters things, but there is still a loss of a few seconds at the start of tracks from a Twonky media server (which does not have the delays when used to other devices).&lt;br /&gt;
&lt;br /&gt;
I noticed this problem with Twonky (it would miss off the first 15 secs of each track. I then tried TVersity and this seems to work perfectly (just need to set the Media Playback device as &amp;quot;Windows Media Center&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
BAD news about this one, IR100 FW 257-a-421-a-057 - after a couple of days, I noticed a background crackling, which I could   &lt;br /&gt;
not put up with, after editing this config out, it dissapeared, It is worse when the radio is silent, for example when &lt;br /&gt;
searching for media,butseems to be there all the time, also very noticable on Radio 4, which seems to have a hiss of its own&lt;br /&gt;
as well.  The problem was worse on one radio than the other, so some may possibly not have it at all.   I don&#039;t know much&lt;br /&gt;
about electronics, but my best guess is that the config was set up in the original way to hide a quality control issue at&lt;br /&gt;
the factory. &lt;br /&gt;
&lt;br /&gt;
I noticed this crackling on an unmodified IR100 when listening to quiet audio (eg Radio 4 or Radio 3). I then noticed that the crackling sound corresponded exactly to the activity light on my WiFi access point - it was the WiFi dongle impacting on the speaker (like the transformer hum problem). I moved the dongle to the other side of the radio and this removed the crackling noise.     The above config mod works a treat .... I&#039;ve been using my IR100 with TVersity to listen to audio from my PC and the &#039;dynamic-mute off&#039; has cured the 3 second mute at the start of each track. Good work you guys.&lt;br /&gt;
&lt;br /&gt;
When turning dynamic-mute off, you can no longer mute your radio with the mute button on the remote control (applies at least for ipdio Style)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 long-browse-press-clears-media-queue&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...While streaming media from a PC, this allows you to clear the media queue without having to go back up the menus. Very usefull if you stream media!&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 hierarchical-locations&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Organizes the station browser into the not very loved &#039;continent&#039; order.&lt;br /&gt;
Answer: Is there a change on the IR100?--[[User:Tim|Tim]] 20:12, 22 January 2008 (CET) - If you are running FW v.257-a-421-a-057, which misses the continent step out [[rfcvb72]] 19:19, (GMT) 22 January 2008&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 preset-poweron&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Any preset switches on the radio from standby, but infuriatingly only opens the top menu, so pretty much useless until someone can work out another command (if there is one) to make it tune straight to the desired station. (IR100 v.257-a-421-a-057)&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 scrobbling&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
No effect at all on and IR100 v.257-a-421-a-057 , but no harm either. I think that this may be intended for devices which include an ipod dock, as LastFM features &#039;Scrobbling&#039; of ipods.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 deemphasis-menu&lt;br /&gt;
 on&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 deemphasis-menu-values&lt;br /&gt;
 0 44100&lt;br /&gt;
This adds a &#039;Deemphasis&#039; item to the Configure menu, with the settings of &#039;none&#039; and &#039;44.1kHz&#039;.&lt;br /&gt;
Using the above values on the Tangent Quattro, produces a deemphasis menu which contains the options &#039;None&#039; &#039;32kHz&#039; &#039;44.1kHz&#039; and &#039;48 kHz&#039;. (M0AUR)18:46 8th Feb 2008.&lt;br /&gt;
&lt;br /&gt;
Why would you do this you might ask?  Well there&#039;s a bug somewhere, maybe in the driver for the Wolfson WM8721 DAC.&lt;br /&gt;
The de-emphasis register in the DAC is being written to somewhere, and going into this menu and selecting &#039;none&#039; clears the register and turns off de-emphasis which should not be on in the first place.  De-emphasis is something DAC chip makers provide for compatibility with a handful of very early CDs that had pre-emphasis (a treble boost) applied.  De-emphasis causes a massive treble reduction and should not be on!  According to the DAC data sheet, with it on, the treble is down nearly 10dB at 20kHz which is like turning the treble right down on your amp.  The makers of the Logik sets, Hip Shing, (over)compensated for this in the IR-100 with a treble boost in the amplifier so nothing needs to be done here (unless you want a treble boost control) BUT they didn&#039;t bother on the IRMA1 which sounds hopelessly muffled.  With this tweak in config997.txt it sounds absolutely fine.  The only bad thing is I haven&#039;t found out how to set a default.  If you power-cycle you have to set it again (though from Standby you do not so not a big deal).  There is a &#039;deemphasis-frequency&#039; option too, which I tried setting to &#039;0&#039; but it had no effect.&lt;br /&gt;
Tested on IRMA1 and IR-100 both with v257-a-421-a-057.  Stolen from config854.txt. --[[User:GSUM|GSUM]] 18:51, 27 January 2008 (CET)&lt;br /&gt;
 Option:&lt;br /&gt;
 super-scrolling&lt;br /&gt;
 on &lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 super-scroll-remote-start-delay&lt;br /&gt;
 2&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 super-scroll-remote-scale-factor&lt;br /&gt;
 1&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 super-scroll-remote-max-step-rate&lt;br /&gt;
 10&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 super-scroll-remote-repeat-threshold&lt;br /&gt;
 400000 &lt;br /&gt;
This is VERY handy for the IRMA1 which lacks a rotary selector. (config997.txt)&lt;br /&gt;
Scrolling through hundreds or even thousands of stations by just holding the &amp;lt;&amp;lt; or &amp;gt;&amp;gt; buttons down is impossible - you just lose the will to live.  With these options, if you hold the button in for a couple of seconds, it starts leaping 10 entries at a time.  Makes the unit MUCH more usable! Tested on IRMA1 with v257-a-421-a-057.  Stolen from config854.txt. --[[User:GSUM|GSUM]] 18:51, 27 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 reset-clock&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
This adds a &#039;Reset Clock&#039; option to the clock menu, it appears to force a sync with the time server. IR100 with v257-a-421-a-057 (Unofficial) &lt;br /&gt;
&lt;br /&gt;
EDIT: The manual for the Sangean (which has this feature as standard) infers that this function removes any user alteration (DST changes etc) but does not specifically mention resync with the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 usb-thumbdrive&lt;br /&gt;
 on&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 thumbdrive-power-connector&lt;br /&gt;
 2&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 thumbdrive-power-pin&lt;br /&gt;
 30&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 local-media&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
...Adds &#039;Local Media&#039; in &#039;Media Player&#039; menu. Plug in a thumb-drive with media on it, then power-cycle. Suggest: Add an external USB hub &amp;amp; velcro it to the back of your radio. Just like  [[https://sharpfin.org/index.php/Image:IR100_with_USB-hub.jpg this picture]]&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 media-player&lt;br /&gt;
 off&lt;br /&gt;
&lt;br /&gt;
Removes the &#039;Media Player&#039; link from the main menu - obviously this will make the media streaming function useless as well.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 reply-button-exits-spinner&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
In the scrolling character entry lists, for instance when entering a WiFi key, this allows a press on Reply instead of scrolling to the [END] option and selecting it. This is probably part of the default configuration for your radio, but was needed to restore this function with the 257-a-744 beta firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following settings have only been tried in 257-a-756-a-199 beta firmware....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Option:&lt;br /&gt;
  pbch-report-enabled&lt;br /&gt;
  off&lt;br /&gt;
&lt;br /&gt;
Removes the &amp;quot;REAL ENABLED&amp;quot; text from the stream information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Kernel Module: reciva_lcd_generic line1frame1=&amp;quot;Radio&amp;quot; line2frame1=&amp;quot;powered&amp;quot; line3frame1=&amp;quot;by&amp;quot; line4frame1=&amp;quot;sharpfin&amp;quot;  line1frame2=&amp;quot;Keep on&amp;quot; line2frame2=&amp;quot;rocking&amp;quot; line3frame2=&amp;quot;in the&amp;quot; line4frame2=&amp;quot;free world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replaces the &amp;quot;Reciva Radio&amp;quot; and &amp;quot;ARM powered&amp;quot; startup text. DO NOT simply enter &amp;quot;&amp;quot; as this causes a startup failure, use &amp;quot; &amp;quot; for a blank line.&lt;br /&gt;
&lt;br /&gt;
== Changes to /root/hwconfig/all_radios.txt ==&lt;br /&gt;
&lt;br /&gt;
Most if not all models seem to refer to this file in their main config, so it&#039;s contents are presumably referenced as if they were in the main configxxx.txt&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 reply-button-function&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Pressing the reply button when tuned to a stream calls up an add to favourites menu, which adds the stream to &#039;My Stations&#039; on the radio and your Reciva account.&lt;br /&gt;
&lt;br /&gt;
It may work if you place it in the main configxxx.txt for your radio, but I have not tested it.&lt;br /&gt;
&lt;br /&gt;
Tested on a IR100 with v.257-a-421-a-057 firmware, the text was already there, I just had to change the instruction from &#039;off&#039; to &#039;on&#039;&lt;br /&gt;
&lt;br /&gt;
The only radio I know of with this feature as standard is the Tangent Quattro with up to date firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Suggested combinations for various radios ==&lt;br /&gt;
&lt;br /&gt;
The following known to work well and provide sensible User Interface benefits to Radio owners:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IR 100 with firmware 257-a-421-a-057&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;(Can someone enter a set of sensible suggestions ?)&#039;&#039;&lt;br /&gt;
^&lt;br /&gt;
 Max:&lt;br /&gt;
 clock-dst-menu:on | back-as-menu-item:on | number-of-alarms:5 | alarm-clock:config1 |  &lt;br /&gt;
 back-as-menu-item: on&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;number-of-alarms&amp;quot; is very useful&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Rfcvb72 - IR 100 with firmware 257-a-421-a-057 - I have these mods running on two IR100&#039;s at the moment&lt;br /&gt;
 clock-dst-menu:on | back-as-menu-item:on | number-of-alarms:5 | alarm-clock:config1 |  &lt;br /&gt;
 back-as-menu-item: on | off-in-main-menu: on | stations-history (20)| power-on-select | dynamic-mute: off | &lt;br /&gt;
&lt;br /&gt;
And in /root/hwconfig/all_radios.txt:&lt;br /&gt;
&lt;br /&gt;
 reply-button-function: on&lt;br /&gt;
&lt;br /&gt;
The only problem I have had is with the snooze function on the power button, which caused shutdown problems, might work better if mapped to another button, but then if you cant find the button, why have a snooze function?&lt;br /&gt;
&lt;br /&gt;
 Favourites are: number-of-alarms:5 | alarm-clock:config1 | power-on-select | dynamic-mute: off&lt;br /&gt;
 all of which make a real difference to the user experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bookmarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bookmarks are a usefull function that allows you to add favourites to a menu in the radio section. This can be added and deleted locally on the radio (unlike the My Stations feature that can only be added locally using the reply feature).  I&#039;ve only tested this with 257-a-756-a-030 on an AE, but will presumably work on all radios with this version of the firmware.&lt;br /&gt;
&lt;br /&gt;
To turn bookmarks on:&lt;br /&gt;
 Option:&lt;br /&gt;
 bookmarks&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
To make it possible to add the current station to the bookmarks:&lt;br /&gt;
 Option:&lt;br /&gt;
 bookmark-on-long-select&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
or (depending on preference, although I have only tried the long select option)&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 bookmark-on-short-select&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
When you select a bookmark you will be given the option to play or delete from the list&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ipdio Style with firmware 257-a-756-a-183&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 dynamic-mute&lt;br /&gt;
 off&lt;br /&gt;
&lt;br /&gt;
Strongly recommended. Turns off the 3 sec delay and the cracking noise between tracks when playing mp3 from your upnp server. This was a big hassle for me, thanks to the sharpfin guys for solving this! When turning dynamic-mute off, you can no longer mute your radio with the mute button on the remote control!&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 reply-button-function&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Strongly recommended. Add current station to MyStations at your reciva account. &lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 long-browse-press-clears-media-queue&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Sounds like a nice function to me.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 report-empty-presets&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Shows a message instead of doing nothing when pressing an empty preset key.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 clock-format-menu&lt;br /&gt;
 on&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 bitmap-clock&lt;br /&gt;
 64x64 /usr/share/reciva/clockdata.bin&lt;br /&gt;
&lt;br /&gt;
Enables cool looking analog clock, but did not show the correct time.&lt;br /&gt;
&lt;br /&gt;
 Option:&lt;br /&gt;
 split-alarm-icons&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
Different Icons for different alarms.&lt;br /&gt;
&lt;br /&gt;
== How to turn off wireless on standby ==&lt;br /&gt;
&lt;br /&gt;
NOTE: 20th March 2008&lt;br /&gt;
&lt;br /&gt;
This Hack seems to be redundant as of FW v.257-a-615-a-075, which applies this powerdown feature as default (tested on IR100)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Note:  September 10, 2008&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;feature&amp;quot; that now is also included with firmware v257-a-756-a-030 causes a new problem where the radio does not connect to the network after a power outage to get its time updated.  This causes the clock to reset to midnight in Standby mode and is not a good idea for a radio used as an Alarm Clock.  See this thread on reciva.com:&lt;br /&gt;
https://www.reciva.com/index.php?option=com_joomlaboard&amp;amp;Itemid=108&amp;amp;func=view&amp;amp;catid=3&amp;amp;id=23869#23869  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As noted on Bill888&#039;s support page, the Ipdio (962) uses less power on standby  (2.9 watts vs. 7 watts), due to it&#039;s wireless being switched off.&lt;br /&gt;
&lt;br /&gt;
A quick look through config962.txt threw up the following:&lt;br /&gt;
&lt;br /&gt;
 # --------------------------------------------&lt;br /&gt;
 # Turn off wifi power in standby - start&lt;br /&gt;
 # --------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 soft-power-down&lt;br /&gt;
 mode2&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 wireless-ethernet-connector&lt;br /&gt;
 2&lt;br /&gt;
 &lt;br /&gt;
 Option:&lt;br /&gt;
 wireless-ethernet-pin&lt;br /&gt;
 32&lt;br /&gt;
 &lt;br /&gt;
 # --------------------------------------------&lt;br /&gt;
 # Turn off wifi power in standby - end&lt;br /&gt;
 # --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I pasted this into config1012.txt, below the last &#039;Option&#039; string and above the driver info and now my wireless is off when the radio is on standby, the dongle usb does not blink and I cannot ping from a command prompt or access the Sharpfin webserver.&lt;br /&gt;
&lt;br /&gt;
Interestingly, the radio seems to switch on to connect and switch off much quicker now, which seems a bit contrary.&lt;br /&gt;
&lt;br /&gt;
Presumably it is using less power as well, though I don&#039;t have a meter to test it with.  It will be intersting to see if the radio uses less power switched on as per the ipdio as well.&lt;br /&gt;
&lt;br /&gt;
This also has the benefit for those of us with external dongles of not leaving a hot, powered up dongle where little hands can find it when the radio is not in use.&lt;br /&gt;
&lt;br /&gt;
ADVICE:  IF YOU WANT TO COPY/PASTE THIS, COPY IT OVER FROM config962.txt TO config1012.txt FROM ONE VI WINDOW TO ANOTHER.  COPYING IN WINDOWS TEXT FORMAT DOES NOT SEEM TO WORK.&lt;br /&gt;
&lt;br /&gt;
AND MAKE SURE YOU CHECK IT!&lt;br /&gt;
&lt;br /&gt;
Note: I&#039;ve tested it with a lan-adapter[cable] and it&#039;s working great! (Radio:IR100) --[[User:Tim|Tim]] 20:33, 22 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;After changing &amp;quot;soft-power-down&amp;quot;,&amp;quot;wireless-ethernet-connector&amp;quot;,&amp;quot;wireless-ethernet-pin&amp;quot;:&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Power consumption(230V):&amp;lt;br&amp;gt;&lt;br /&gt;
Working-&amp;gt;Volume=min -&amp;gt;47,7mA&amp;lt;br&amp;gt;&lt;br /&gt;
Working-&amp;gt;Volume=max -&amp;gt;approx 60mA(depends on radio station/programm, tested with BBC1&amp;lt;br&amp;gt;&lt;br /&gt;
Standby             -&amp;gt;41,1mA&amp;lt;br&amp;gt;&lt;br /&gt;
Unplugged the lan-adapter-&amp;gt; 41,1mA&amp;lt;br&amp;gt;--[[User:Tim|Tim]] 21:51, 22 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An easier way to achieve this result:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
include the line &#039;include config962.txt&#039; in the config file of your radio.  Config962 itself includes the line &#039;include config1012.txt&#039; it would seem prudent to remove this, especially if you have an IR100 or similar.&lt;br /&gt;
&lt;br /&gt;
NOTE: adding this line will also enable Stations History, Hierarchical Locations and Standby Text (Ipido Radio)&lt;br /&gt;
&lt;br /&gt;
== Podcasts in top menu ==&lt;br /&gt;
&lt;br /&gt;
I just put this section in as a teporary measure to log attempts with this string, so we dont need to waste our time repeatedly trying the same values, it could doubtless do with a table if anyone knows how to knock one together.&lt;br /&gt;
&lt;br /&gt;
podcasts-menu-position&lt;br /&gt;
&lt;br /&gt;
&#039;top&#039;  &amp;gt; tried with v257-a421-a-057 &amp;gt; no effect&lt;br /&gt;
&lt;br /&gt;
&#039;main&#039; &amp;gt; tried with v257-a421-a-057 &amp;gt; no effect&lt;br /&gt;
&lt;br /&gt;
== Further notes and observations ==&lt;br /&gt;
&lt;br /&gt;
This [https://www.reciva.com/index.php?option=com_joomlaboard&amp;amp;Itemid=77&amp;amp;func=view&amp;amp;id=12143&amp;amp;catid=3 thread] on the Reciva website has a few clues ( which may now all be explained above ).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*** For Tangent Quattro owners ***&lt;br /&gt;
&lt;br /&gt;
I tried some mods on the config931.txt. But after today&#039;s change I have bricked my radio....&lt;br /&gt;
I am running these software/firmware versions:&lt;br /&gt;
v589-a-516-a-055;257-a-421-a-041;v24070821+00-a-012&lt;br /&gt;
One of these two mods causes the radio not to boot.&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
playback-layout&lt;br /&gt;
clock-plus-1line&lt;br /&gt;
&lt;br /&gt;
[I had hoped to enable the clock when listening to radio or media server]&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
long-browse-press-clears-media-queue&lt;br /&gt;
on&lt;br /&gt;
&lt;br /&gt;
So now I have to unbrick it! Just ordered the JTAG cable.&lt;br /&gt;
When I have it and started to disassemble my Quattro MKII I will keep you posted.&lt;br /&gt;
&lt;br /&gt;
Bernard&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Questions&amp;diff=210</id>
		<title>Questions</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Questions&amp;diff=210"/>
		<updated>2025-06-08T12:51:07Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Questions ==&lt;br /&gt;
&lt;br /&gt;
Some questions that come to mind when gathering the info&lt;br /&gt;
&lt;br /&gt;
* There seems to be [[LIRC]] support in the kernel, reciva also provides lirc sources. How hard would it be to add a remote to existing radios ?&lt;br /&gt;
**It&#039;s very easy, I&#039;ve got one working on a Logik IR100. All radios include LIRC but the configuration file needs to be changed so shell access is necessary. --[[User:Rdk|Rdk]] 16:49, 21 August 2007 (CEST)&lt;br /&gt;
* What is the purpose of the libgpg-error package Reciva provides ? Is this just used as a generic error reporting framework?&lt;br /&gt;
**Presumably libgcrypt depends on it.&lt;br /&gt;
* Does the Barracuda use special co-processors or dedicated hardware for audio codecs ?&lt;br /&gt;
**The audio codecs are all implemented as software libraries, new ones have been added over time e.g. aac+ and now FLAC --[[User:Rdk|Rdk]] 16:49, 21 August 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Letters ==&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
I added a usb hub to my IR100. An usb ethernet adapter and the original wifi adapter are plugged into that hub.&lt;br /&gt;
My problem is that the devices(hub,wlan/ethernet adapters) don&#039;t turn off when I switch off the radio(standby)&lt;br /&gt;
&lt;br /&gt;
If the ethernet or the wifi adapter is connected without a hub to the reciva board, the devices turn off if I switch off the radio.&lt;br /&gt;
&lt;br /&gt;
Does anyone has an idea how I could solve that problem?&lt;br /&gt;
&lt;br /&gt;
I also tried changing that option &amp;quot;soft-power-down&amp;quot;-&amp;gt;mode2(default)  to mode1&lt;br /&gt;
--[[User:Tim|Tim]] 02:09, 8 March 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
is it possible to add an optical audio out to the reciva radios (esp. ipdio Style)? At least with my radio, the analog headphone output is of very low quality and there is a clearly audible noise at low volumes.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
kom&lt;br /&gt;
&lt;br /&gt;
--[[User:Kom|Kom]] 10:40, 11 September 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
after i changed my Config849.txt, my radio doesn&#039;t boot, when i turn it on, it displays &amp;quot;Reciva Radio ARM Powered&amp;quot;.&lt;br /&gt;
I don&#039;t have a JTAG cable, and i don&#039;t have a backup file.&lt;br /&gt;
But can i use a USB keyboard attached to the internal USB port to close the Reciva application (like ALT + F4 in Windows) and wait to the Sharpfin telnet server loads, to use telnet to restore the original Config849.txt file ?&lt;br /&gt;
&lt;br /&gt;
--[[User:Andrei66|Andrei66]] 12:32, 23 March 2010 (CET)&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Hardware&amp;diff=209</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Hardware&amp;diff=209"/>
		<updated>2025-06-08T12:49:47Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Radios =&lt;br /&gt;
&lt;br /&gt;
The Barracuda is used in [[Radios|these radios]].&lt;br /&gt;
&lt;br /&gt;
== Hardware Matrix ==&lt;br /&gt;
&lt;br /&gt;
The radios contain slightly different internal hardware architectures, including different LCDs, Keypads and some different pin connections on the Barracuda module.  A [[Hardware Matrix]] showing the differences, plus datasheets for the hardware has been compiled.&lt;br /&gt;
&lt;br /&gt;
= Barracuda hardware =&lt;br /&gt;
&lt;br /&gt;
The Barracuda module is a pretty straightforward, but very compact, board with CPU, flash, ram and some interfacing for audio, buttons and LCD display&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:barracuda-top.jpg|thumb|Front of the PCB]]&lt;br /&gt;
| [[Image:barracuda-bottom.jpg|thumb|Back of the PCB]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda-board-outline.jpg|thumb|Board outline with numbered pins including JTAG]]&lt;br /&gt;
| [[Image:Processor-pin-types.jpg|thumb|Processor Pin Types]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:barracuda-pinout.png|thumb|Connector pinout, thanks to rdk]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda-layers.jpg|thumb|Composite image showing top and bottom layers]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda.jpg|thumb|Original and later Lead-Free versions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Processor board is marked &#039;Reciva&#039; and &#039;IRM2&#039; in the silk screen, and contains (mainly) three devices, all manufactured by Samsung.  &lt;br /&gt;
&lt;br /&gt;
The next row of images shows a board outline with pin numbers on the pads. These numbers are by no means official, but until we know the exact purpose of the pins, it&#039;s handy to give them a number so everybody is talking about the same thing.  Reciva&#039;s application note for the Barracuda module is at http://www.reciva.com/data/barracuda_1.6.pdf.  It contains the official pin numbers and descriptions.&lt;br /&gt;
&lt;br /&gt;
== Diagnostics ==&lt;br /&gt;
&lt;br /&gt;
Diagnostic Captures have been taken to diagnose:&lt;br /&gt;
&lt;br /&gt;
* [[Connector Pins]]&lt;br /&gt;
* [[Component Pads]]&lt;br /&gt;
&lt;br /&gt;
== Main CPU ==&lt;br /&gt;
&lt;br /&gt;
* The central one is the main processor, [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=836&amp;amp;partnum=S3C2410&amp;amp;xFmly_id=229 Samsung S3C2410] for which a complete datasheet has been available. Samsung recently updated their website, and the datasheet is now only available to registered companies.&lt;br /&gt;
&lt;br /&gt;
The processor is running at 202.80MHz (MPLLCON=000a1031)&lt;br /&gt;
&lt;br /&gt;
The CPU has the following on-board functions:&lt;br /&gt;
&lt;br /&gt;
* ARM920T core&lt;br /&gt;
* PCM Sound device&lt;br /&gt;
* USB host/device interface&lt;br /&gt;
* TFT LCD/STN LCD Controller (16bit, 640x480 maximum)&lt;br /&gt;
* JTAG Port (is TRST Open Drain or Push Pull?)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Smally Tiny12 CPU ==&lt;br /&gt;
&lt;br /&gt;
There&#039;s also an [http://www.atmel.com/dyn/resources/prod_documents/doc1006.pdf Atmel Tiny12L MCU] onboard. There is only a rough idea what it is doing.&lt;br /&gt;
&lt;br /&gt;
The sernum daemon uses it to:&lt;br /&gt;
&lt;br /&gt;
* create the DES and 3DES keys for the [http://www.g3gg0.de/wordpress/?p=31 reciva:// protocol] using XTEA cipher. (That protocol is e.g. used to get the playlists from the reciva servers)&lt;br /&gt;
* get the serial number of the device&lt;br /&gt;
* reset the device (not tested yet)&lt;br /&gt;
&lt;br /&gt;
Atmel is accessed via a simple serial protocol using these ports:&lt;br /&gt;
 GPE11  -  SACK (ARM &amp;lt;-  Atmel)&lt;br /&gt;
 GPE12  -  SDAT (ARM &amp;lt;-&amp;gt; Atmel)&lt;br /&gt;
 GPE13  -  SCLK (ARM  -&amp;gt; Atmel)&lt;br /&gt;
&lt;br /&gt;
At startup the sernum daemon simply mmaps the memory area at 0x56000000 with size 0x100 to directly access the GPIO&#039;s at 0x56000040 and 0x56000044. &lt;br /&gt;
&lt;br /&gt;
Some standalone tool which access the Atmel and reads serial number, version and calculates some example challenges will soon be uploaded into the SVN repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another guess is that it controls the booting of the main processor. The big processors often have built-in boot loaders that are accessed by setting pins high or low at reset. This can be controlled with links, but using a tiny processor makes more sense. It could for instance invoke the boot loader at start-up and check for a few seconds to see if there is any communication. If there is some, it lets the boot continue. If there is none it resets the processor, set the links to run mode and the starts the processor. This is much easier than opening the box and setting links/switches!&lt;br /&gt;
&lt;br /&gt;
== Flash ==&lt;br /&gt;
&lt;br /&gt;
* The top left device is the [[Reciva NAND Flash]], which a [http://www.samsung.com/products/semiconductor/NANDFlash/SLC_SmallBlock/128Mbit/K9F2808U0C/K9F2808U0C.htm K9F2808U0C]: 16Mb*8 flash memory.&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
* the bottom left device is [http://www.samsung.com/Products/Semiconductor/Sync_AsyncDRAM/SDRSDRAM/Component/256Mbit/K4S561632E/ds_sdr_256mb_e_die_x4x8x16_rev15.pdf SDRAM 16M*16] (K4S561632E-TC75)&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&lt;br /&gt;
This [https://sharpfin.org/images/b/be/Barracuda-Schematic-Top.pdf Barracuda-Schematic-Top.pdf] (work in progress) is an amalgamation of information extracted from several disassembled radios, plus information extracted from the GPL&#039;d source.&lt;br /&gt;
&lt;br /&gt;
== Source Data ==&lt;br /&gt;
&lt;br /&gt;
Source files (schematic, drawings, etc...) can be found on the [[Source Files]] page.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Hardware&amp;diff=208</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Hardware&amp;diff=208"/>
		<updated>2025-06-08T12:47:07Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Radios =&lt;br /&gt;
&lt;br /&gt;
The Barracuda is used in [[Radios|these radios]].&lt;br /&gt;
&lt;br /&gt;
== Hardware Matrix ==&lt;br /&gt;
&lt;br /&gt;
The radios contain slightly different internal hardware architectures, including different LCDs, Keypads and some different pin connections on the Barracuda module.  A [[Hardware Matrix]] showing the differences, plus datasheets for the hardware has been compiled.&lt;br /&gt;
&lt;br /&gt;
= Barracuda hardware =&lt;br /&gt;
&lt;br /&gt;
The Barracuda module is a pretty straightforward, but very compact, board with CPU, flash, ram and some interfacing for audio, buttons and LCD display&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:barracuda-top.jpg|thumb|Front of the PCB]]&lt;br /&gt;
| [[Image:barracuda-bottom.jpg|thumb|Back of the PCB]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda-board-outline.jpg|thumb|Board outline with numbered pins including JTAG]]&lt;br /&gt;
| [[Image:Processor-pin-types.jpg|thumb|Processor Pin Types]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:barracuda-pinout.png|thumb|Connector pinout, thanks to rdk]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda-layers.jpg|thumb|Composite image showing top and bottom layers]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Barracuda.jpg|thumb|Original and later Lead-Free versions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Processor board is marked &#039;Reciva&#039; and &#039;IRM2&#039; in the silk screen, and contains (mainly) three devices, all manufactured by Samsung.  &lt;br /&gt;
&lt;br /&gt;
The next row of images shows a board outline with pin numbers on the pads. These numbers are by no means official, but until we know the exact purpose of the pins, it&#039;s handy to give them a number so everybody is talking about the same thing.  Reciva&#039;s application note for the Barracuda module is at http://www.reciva.com/data/barracuda_1.6.pdf.  It contains the official pin numbers and descriptions.&lt;br /&gt;
&lt;br /&gt;
== Diagnostics ==&lt;br /&gt;
&lt;br /&gt;
Diagnostic Captures have been taken to diagnose:&lt;br /&gt;
&lt;br /&gt;
* [[Connector Pins]]&lt;br /&gt;
* [[Component Pads]]&lt;br /&gt;
&lt;br /&gt;
== Main CPU ==&lt;br /&gt;
&lt;br /&gt;
* The central one is the main processor, [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=836&amp;amp;partnum=S3C2410&amp;amp;xFmly_id=229 Samsung S3C2410] for which a complete datasheet has been available. Samsung recently updated their website, and the datasheet is now only available to registered companies.&lt;br /&gt;
&lt;br /&gt;
The processor is running at 202.80MHz (MPLLCON=000a1031)&lt;br /&gt;
&lt;br /&gt;
The CPU has the following on-board functions:&lt;br /&gt;
&lt;br /&gt;
* ARM920T core&lt;br /&gt;
* PCM Sound device&lt;br /&gt;
* USB host/device interface&lt;br /&gt;
* TFT LCD/STN LCD Controller (16bit, 640x480 maximum)&lt;br /&gt;
* JTAG Port (is TRST Open Drain or Push Pull?)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Smally Tiny12 CPU ==&lt;br /&gt;
&lt;br /&gt;
There&#039;s also an [http://www.atmel.com/dyn/resources/prod_documents/doc1006.pdf Atmel Tiny12L MCU] onboard. There is only a rough idea what it is doing.&lt;br /&gt;
&lt;br /&gt;
The sernum daemon uses it to:&lt;br /&gt;
&lt;br /&gt;
* create the DES and 3DES keys for the [http://www.g3gg0.de/wordpress/?p=31 reciva:// protocol] using XTEA cipher. (That protocol is e.g. used to get the playlists from the reciva servers)&lt;br /&gt;
* get the serial number of the device&lt;br /&gt;
* reset the device (not tested yet)&lt;br /&gt;
&lt;br /&gt;
Atmel is accessed via a simple serial protocol using these ports:&lt;br /&gt;
 GPE11  -  SACK (ARM &amp;lt;-  Atmel)&lt;br /&gt;
 GPE12  -  SDAT (ARM &amp;lt;-&amp;gt; Atmel)&lt;br /&gt;
 GPE13  -  SCLK (ARM  -&amp;gt; Atmel)&lt;br /&gt;
&lt;br /&gt;
At startup the sernum daemon simply mmaps the memory area at 0x56000000 with size 0x100 to directly access the GPIO&#039;s at 0x56000040 and 0x56000044. &lt;br /&gt;
&lt;br /&gt;
Some standalone tool which access the Atmel and reads serial number, version and calculates some example challenges will soon be uploaded into the SVN repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another guess is that it controls the booting of the main processor. The big processors often have built-in boot loaders that are accessed by setting pins high or low at reset. This can be controlled with links, but using a tiny processor makes more sense. It could for instance invoke the boot loader at start-up and check for a few seconds to see if there is any communication. If there is some, it lets the boot continue. If there is none it resets the processor, set the links to run mode and the starts the processor. This is much easier than opening the box and setting links/switches!&lt;br /&gt;
&lt;br /&gt;
== Flash ==&lt;br /&gt;
&lt;br /&gt;
* The top left device is the [[Reciva NAND Flash]], which a [http://www.samsung.com/products/semiconductor/NANDFlash/SLC_SmallBlock/128Mbit/K9F2808U0C/K9F2808U0C.htm K9F2808U0C]: 16Mb*8 flash memory.&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
* the bottom left device is [http://www.samsung.com/Products/Semiconductor/Sync_AsyncDRAM/SDRSDRAM/Component/256Mbit/K4S561632E/ds_sdr_256mb_e_die_x4x8x16_rev15.pdf SDRAM 16M*16] (K4S561632E-TC75)&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&lt;br /&gt;
This [https://sharpfin.org/index.php/Image:Barracuda-Schematic-Top.pdf schematic] (work in progress) is an amalgamation of information extracted from several disassembled radios, plus information extracted from the GPL&#039;d source.&lt;br /&gt;
&lt;br /&gt;
== Source Data ==&lt;br /&gt;
&lt;br /&gt;
Source files (schematic, drawings, etc...) can be found on the [[Source Files]] page.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Logos&amp;diff=207</id>
		<title>Logos</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Logos&amp;diff=207"/>
		<updated>2025-06-08T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Logos ==&lt;br /&gt;
&lt;br /&gt;
[[Image:sharpfin.jpg]]&lt;br /&gt;
&lt;br /&gt;
Download file [https://www.sharpfin.org/images/d/db/Sharpfin.jpg here]&lt;br /&gt;
&lt;br /&gt;
== Avatars ==&lt;br /&gt;
&lt;br /&gt;
[[Image:sharpfin-avatar.jpg]]&lt;br /&gt;
&lt;br /&gt;
Download file [https://www.sharpfin.org/images/7/76/Sharpfin-avatar.jpg here]&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Main_Page&amp;diff=206</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Main_Page&amp;diff=206"/>
		<updated>2025-06-08T12:43:40Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sharpfin project =&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to gather information about the Reciva &#039;Barracuda&#039; radio module, in order to understand enough of the hardware to be able to provide alternative [[GPL]] firmware.&lt;br /&gt;
&lt;br /&gt;
The Sharpfin Project &amp;lt;i&amp;gt;needs the support&amp;lt;/i&amp;gt; of keen and enthusiatic hobbyist/engineers - it is a mammoth task in understanding the internal workings of the radio - we have some partial schematics and are begining to analyse the [[GPL]] code, but there is lots to do, so&lt;br /&gt;
&lt;br /&gt;
If you would like to participate, or if you have any information to share on this wiki just [{{fullurl:Special:UserLogin|type=signup}} register] or [[Special:UserLogin|login]] and start editing.&lt;br /&gt;
&lt;br /&gt;
Technical / development discussions can be found on the [http://groups.google.com/group/sharpfin Sharpfin Google Groups Pages]. Suggestions for new mailing system are welcome&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=100%&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=2 bgcolor=#ffffff style=&#039;border: solid 1px #888&#039; valign=top&amp;gt;&lt;br /&gt;
== News ==&lt;br /&gt;
* 2017-03-11: A server upgrade was performed and HTTPS support was added. We recommend these URLS: https://www.sharpfin.org or https://www.sharpf.in&lt;br /&gt;
* 2012-11-30: Since a few days ago you can reach the wiki also via https://www.sharpfin.org, https://www.sharpf.in&lt;br /&gt;
* 2012-10-22: New howto page: [[OpenOCD|Barracuda module debug over JTAG using OpenOCD]]; thx to Dhires&lt;br /&gt;
* 2012-10-10: News for [[Unbricking]]/[https://www.sharpfin.org/images/a/a4/Sharpflash_v0.4.zip Sharpflash v 0.4]&lt;br /&gt;
* 2012-10-03: [[Releases#Patchserver|Patchserver 0.7rc3]] [https://www.sharpfin.org/images/2/25/Patchserver_0.7rc3.zip Win] (no changes for Linux version)&lt;br /&gt;
* 2012-10-01: [[Releases#Patchserver|Patchserver 0.7rc2]] (&amp;lt;strike&amp;gt;Win&amp;lt;/strike&amp;gt;/[https://www.sharpfin.org/images/8/85/Patchserver_0.7rc2.tar.bz2 Linux])&lt;br /&gt;
* 2012-01-14: [[Releases#Patchserver|Patchserver]] ([https://www.sharpfin.org/images/1/1e/Patchserver_0.7rc1.zip Win]/[https://www.sharpfin.org/images/6/60/Patchserver_0.7rc1.tar.bz2 Linux]), [[Releases#Webserver|Webserver]], [[Releases#Libreciva|Libreciva]] updated &amp;amp;amp; [[Releases#Nanddump|Nanddump]] and [[Releases#Lircd|Lircd]] added&lt;br /&gt;
* 2012-01-09: Windows [[Releases#Development Tools|Cygwin Cross-Compiler]] v 0.2 released&lt;br /&gt;
* 2012-01-02: Sharpfin [[Releases#Webserver|Webserver]] v0.8 released (remote control integration, etc.)&lt;br /&gt;
* 2011-12-31: Sharpfin [[Releases#Webserver|Webserver]] updated (links, nanddump, etc.)&lt;br /&gt;
* 2011-12-05: New Sharpfin Wiki&lt;br /&gt;
* 2011-11-30: [https://github.com/philsmd/sharpfin Github repo] created&lt;br /&gt;
* 2010-11-06: [[Installing an Infrared Remote Control on the IR100]] updated&lt;br /&gt;
* 2010-05-14: [[Modifying the Hardware]] section added.&lt;br /&gt;
* 2010-03-12: [[Sharpfin Enhance Pack]] 2 - SHARPFINreloaded is out!&lt;br /&gt;
* [[Old News]]&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td bgcolor=#ffffff style=&#039;border: solid 1px #888&#039; valign=top&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Introduction]]: What&#039;s all this&lt;br /&gt;
* [[Quickstart]]: For the impatient&lt;br /&gt;
* [[Legal]]: Legal stuff&lt;br /&gt;
* [[Wishlist]]: What do we want...&lt;br /&gt;
* [[Roadmap]]: ...and how do we get there&lt;br /&gt;
* [[Libreciva]]: Our libreciva reference manual&lt;br /&gt;
* [[Repository]]: The Sharpfin Git Repository&lt;br /&gt;
* [[Talk:Main_Page|Discussion]]: A place for talk and chat   &lt;br /&gt;
* [[Logos]]: Icons, Avatars and Logos&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td bgcolor=#ffffff style=&#039;border: solid 1px #888&#039; valign=top&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Technical documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Radios]]: Reciva Radios and features.  Also firmware info.&lt;br /&gt;
* [[Hardware]]: What&#039;s in the box&lt;br /&gt;
* [[Software]]: And what is it running&lt;br /&gt;
* [[Changing Your Radio]]: Change configuration and firmware&lt;br /&gt;
* [[Modifying the Hardware]]: Hardware modifications for your radio&lt;br /&gt;
* [[Unbricking]]: How to recover when things go wrong&lt;br /&gt;
* [[Links]] to other sites with info&lt;br /&gt;
* [[Questions]]: Things that are unclear and need to be figured out&lt;br /&gt;
* [[Sample Project]]: Your home-made Internet Radio Exploration Lab&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;footer_image&amp;quot;&amp;gt;[[File:Sharpfin_transparent.png]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Installing_an_Infrared_Remote_Control_on_the_IR100&amp;diff=205</id>
		<title>Installing an Infrared Remote Control on the IR100</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Installing_an_Infrared_Remote_Control_on_the_IR100&amp;diff=205"/>
		<updated>2025-06-08T12:42:07Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This applies to all Reciva radios, not just the IR100.&lt;br /&gt;
&lt;br /&gt;
For a remote control to work there must be a suitable IR sensor fitted and a lircd configuration file. That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a sensor ===&lt;br /&gt;
&lt;br /&gt;
For radios that don&#039;t already have an IR sensor some hardware modifications will be required to add one in the case where it will be visible. Almost any IR decoder that will run from a 3.3V supply should work, these devices remove the 38kHz carrier and output a logic signal that the Barracuda board can directly decode. Most remote controls operate at 38kHz but there are some which operate at higher frequencies which won&#039;t work with the sensors listed. &lt;br /&gt;
&lt;br /&gt;
Some suitable sensors available from RS components are:&lt;br /&gt;
&lt;br /&gt;
* TSOP34838  (RS 700-5308)&lt;br /&gt;
* TSOP1138   (RS 708-5550)&lt;br /&gt;
* TSOP31238  (RS 570-578)&lt;br /&gt;
* GP1UX301QS   (RS 666-6542)&lt;br /&gt;
&lt;br /&gt;
(Maplin no longer appear to stock anything suitable)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check the pin-out for whichever model you use - they&#039;re not all the same. Connections to the radio are:&lt;br /&gt;
&lt;br /&gt;
* Decoded signal / output - GPG6 (JP1, pin 5),&lt;br /&gt;
* Vcc / Supply - 3.3V supply (JP1, pin 14),&lt;br /&gt;
* Gnd. (JP1, pin 9)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pin numbers refer to the Barracuda board itself. It&#039;s probably best to solder the wires to the main board inside the radio, rather than directly to the barracuda board so that it can be removed if necessary. Carefully check the connections to make sure the correct pins are used and nothing gets shorted out!&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:Barracuda-board-outline.jpg|thumb|Board outline with numbered pins]]&lt;br /&gt;
| [[Image:barracuda-pinout.png|thumb|Connector pinout]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A 47nF ceramic or polyester decoupling capacitor connected to the supply pins at the sensor end of the wires is probably a good idea.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration to enable control ===&lt;br /&gt;
&lt;br /&gt;
For the radio to respond to an IR remote control a lircd configuration file is required in the /etc/config/ directory. The file must be named lircd_configXXXX.conf where the XXX is replaced with the radio&#039;s hardware ID. For a Logik IR100 this would be lircd_config1012.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using a Reciva remote control ===&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that works with an existing Reciva radio you can simply copy the file for that, renaming it with your radio&#039;s hardware ID. It has been reported  [http://logikir100.tripod.com/Vistron.htm]  that a One for all universal remote control set up with code 0435 will work with an MX200i so to use this with a Logik IR100 you would need to do this in a root terminal (login as admin):&lt;br /&gt;
&lt;br /&gt;
Enable write access:&lt;br /&gt;
&lt;br /&gt;
 # mount / -orw,remount&lt;br /&gt;
&lt;br /&gt;
Copy the existing config file:&lt;br /&gt;
&lt;br /&gt;
 # cp /etc/config/lircd_config825.conf /etc/config/lircd_config1012.conf&lt;br /&gt;
&lt;br /&gt;
Disable write access again:&lt;br /&gt;
&lt;br /&gt;
 # mount / -oro,remount&lt;br /&gt;
&lt;br /&gt;
and reboot:&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
And everything should work! No changes are required to the &lt;br /&gt;
/root/hwconfig/configXXXX.txt file.&lt;br /&gt;
&lt;br /&gt;
Note that some functions, such as volume control, may need to be enabled in the /root/hwconfig/configXXXX.txt file for the corresponding buttons on the remote to respond correctly but no changes are required for the basic functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using any remote control ===&lt;br /&gt;
&lt;br /&gt;
It should be possible to use any remote control using a suitable configuration file. Check http://www.lirc.org/remotes to see if details for your remote control are available or use irrecord, part of lircd available on linux and probably windows, to create a new file.&lt;br /&gt;
&lt;br /&gt;
Note: Not tested with raw codes.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve used a One for all URC-3920  [http://www.oneforall.com/en_uk/product/1/universal-remotes/2/comfort/153/slim-line-2]  programmed for code 02230 to make this lircd_configXXX.conf file:&lt;br /&gt;
&lt;br /&gt;
 # Please make this file available to others&lt;br /&gt;
 # by sending it to &amp;lt;lirc@bartelmus.de&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # this config file was automatically generated&lt;br /&gt;
 # using lirc-0.8.3(default) on Fri Nov  5 13:52:36 2010&lt;br /&gt;
 #&lt;br /&gt;
 # contributed by GC&lt;br /&gt;
 #&lt;br /&gt;
 # brand:         One for All - urc3920 Code:02230&lt;br /&gt;
 # model no. of remote control: &lt;br /&gt;
 # devices being controlled by this remote:&lt;br /&gt;
 #&lt;br /&gt;
 begin remote&lt;br /&gt;
   name  urc3920-02230&lt;br /&gt;
   bits           13&lt;br /&gt;
   flags RC5|CONST_LENGTH&lt;br /&gt;
   eps            30&lt;br /&gt;
   aeps          100&lt;br /&gt;
   one           866   909&lt;br /&gt;
   zero          866   909&lt;br /&gt;
   plead         858&lt;br /&gt;
   gap          113721&lt;br /&gt;
   toggle_bit    2&lt;br /&gt;
       begin codes&lt;br /&gt;
 # button: menu   &lt;br /&gt;
                   v          0x1135&lt;br /&gt;
 # button: power  &lt;br /&gt;
                   O          0x1101&lt;br /&gt;
 # button: 1&lt;br /&gt;
                   C          0x111E&lt;br /&gt;
 # button: 2      &lt;br /&gt;
                   D          0x111F&lt;br /&gt;
 # button: 3      &lt;br /&gt;
                   E          0x1120&lt;br /&gt;
 # button: 4      &lt;br /&gt;
                   F          0x1122&lt;br /&gt;
 # button: 5      &lt;br /&gt;
                   G          0x1123&lt;br /&gt;
 # button: 6      &lt;br /&gt;
                   H          0x1124&lt;br /&gt;
 # button: 7      &lt;br /&gt;
                   I          0x1126&lt;br /&gt;
 # button: 8      &lt;br /&gt;
                   J          0x1127&lt;br /&gt;
 # button: 9      &lt;br /&gt;
                   K          0x1128&lt;br /&gt;
 # button: ./..   &lt;br /&gt;
                   k          0x1130&lt;br /&gt;
 # button: 0      &lt;br /&gt;
                   L          0x112B&lt;br /&gt;
 # button: av     &lt;br /&gt;
                   i          0x112F&lt;br /&gt;
 # button: vol+   &lt;br /&gt;
                   U          0x1116&lt;br /&gt;
 # button: vol-   &lt;br /&gt;
                   V          0x111A&lt;br /&gt;
 # button: mute   &lt;br /&gt;
                   W          0x1117&lt;br /&gt;
 # button: ok     &lt;br /&gt;
                   R          0x1111&lt;br /&gt;
 # button: ch+    &lt;br /&gt;
                   A          0x1119&lt;br /&gt;
 # button: ch-    &lt;br /&gt;
                   B          0x111D&lt;br /&gt;
 # button: up     &lt;br /&gt;
                   p          0x110E&lt;br /&gt;
 # button: down   &lt;br /&gt;
                   q          0x1114&lt;br /&gt;
 # button: left   &lt;br /&gt;
                   N          0x1110&lt;br /&gt;
 # button: right  &lt;br /&gt;
                   R          0x1112&lt;br /&gt;
 # button: red    &lt;br /&gt;
                   c          0x1132&lt;br /&gt;
 # button: green  &lt;br /&gt;
 ##                            0x1129&lt;br /&gt;
 # button: yellow &lt;br /&gt;
                   e          0x1125&lt;br /&gt;
 # button: blue   &lt;br /&gt;
                   f          0x111C&lt;br /&gt;
 # button: rew    &lt;br /&gt;
                   Z          0x1105&lt;br /&gt;
 # button: ff     &lt;br /&gt;
                   Y          0x1108&lt;br /&gt;
 # button: pause  &lt;br /&gt;
                   t          0x112E&lt;br /&gt;
 # button: play   &lt;br /&gt;
                   s          0x112E&lt;br /&gt;
 # button: rec    &lt;br /&gt;
 ##                            0x110C&lt;br /&gt;
 # button: stop   &lt;br /&gt;
                   b          0x110B&lt;br /&gt;
 # button: guide  &lt;br /&gt;
                   d          0x1113&lt;br /&gt;
 # button: info   &lt;br /&gt;
                   3          0x110F&lt;br /&gt;
 # button: exit   &lt;br /&gt;
                   N          0x111B&lt;br /&gt;
       end codes &lt;br /&gt;
 end remote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The top of the file describes the characteristics of the remote - timings etc. The codes section translates a remote control code (eg. 0x1135) into a single character that the radio decodes as a button (v).&lt;br /&gt;
&lt;br /&gt;
This has the advantage over the MX200i universal remote method of the buttons being directly set to the required function, no keymapping is required. The descriptions in between the codes above are the actual buttons on the remote, not Reciva&#039;s name. It&#039;s easy to change.&lt;br /&gt;
&lt;br /&gt;
Note that the version of lircd in the Reciva software doesn&#039;t seem to understand the toggle_bit_mask command so this may need to be changed to the equivalent toggle_bit command (toggle_bit_mask 0x0 will become toggle_bit 0  and for RC5 codes, as above, 0x800 will become 2).&lt;br /&gt;
&lt;br /&gt;
The list of available options is:&lt;br /&gt;
&lt;br /&gt;
 lirc code to event mapping table from idrv_input_event.c (!)&lt;br /&gt;
     &#039;A&#039; = INPUT_UP&lt;br /&gt;
     &#039;B&#039; = INPUT_DOWN&lt;br /&gt;
     &#039;C&#039; = INPUT_PRESET_1&lt;br /&gt;
     &#039;D&#039; = INPUT_PRESET_2&lt;br /&gt;
     &#039;E&#039; = INPUT_PRESET_3&lt;br /&gt;
     &#039;F&#039; = INPUT_PRESET_4&lt;br /&gt;
     &#039;G&#039; = INPUT_PRESET_5&lt;br /&gt;
     &#039;H&#039; = INPUT_PRESET_6&lt;br /&gt;
     &#039;I&#039; = INPUT_PRESET_7&lt;br /&gt;
     &#039;J&#039; = INPUT_PRESET_8&lt;br /&gt;
     &#039;K&#039; = INPUT_PRESET_9&lt;br /&gt;
     &#039;L&#039; = INPUT_PRESET_10&lt;br /&gt;
     &#039;M&#039; = INPUT_REPLY&lt;br /&gt;
     &#039;N&#039; = INPUT_BACK&lt;br /&gt;
     &#039;O&#039; = INPUT_POWER&lt;br /&gt;
     &#039;P&#039; = INPUT_POWER_ON&lt;br /&gt;
     &#039;Q&#039; = INPUT_POWER_OFF&lt;br /&gt;
     &#039;R&#039; = INPUT_SELECT&lt;br /&gt;
     &#039;S&#039; = INPUT_RELEASE&lt;br /&gt;
     &#039;T&#039; = INPUT_SHIFT&lt;br /&gt;
     &#039;U&#039; = INPUT_VOL_UP&lt;br /&gt;
     &#039;V&#039; = INPUT_VOL_DOWN&lt;br /&gt;
     &#039;W&#039; = INPUT_MUTE&lt;br /&gt;
     &#039;X&#039; = INPUT_ZOOM&lt;br /&gt;
     &#039;Y&#039; = INPUT_SKIP_NEXT&lt;br /&gt;
     &#039;Z&#039; = INPUT_SKIP_PREVIOUS&lt;br /&gt;
     &#039;a&#039; = INPUT_PLAY_PAUSE&lt;br /&gt;
     &#039;b&#039; = INPUT_STOP&lt;br /&gt;
     &#039;c&#039; = INPUT_PLAYBACK_MODE&lt;br /&gt;
     &#039;d&#039; = INPUT_BROWSE_QUEUE&lt;br /&gt;
     &#039;e&#039; = INPUT_ALARM&lt;br /&gt;
     &#039;f&#039; = INPUT_SLEEP_TIMER&lt;br /&gt;
     &#039;g&#039; = INPUT_AUDIO_SOURCE&lt;br /&gt;
     &#039;h&#039; = INPUT_SNOOZE&lt;br /&gt;
     &#039;i&#039; = INPUT_STORE_PRESET&lt;br /&gt;
     &#039;j&#039; = INPUT_RECALL_PRESET&lt;br /&gt;
     &#039;k&#039; = INPUT_EXTEND_PRESET &amp;quot;--/-&amp;quot;&lt;br /&gt;
     &#039;l&#039; = INPUT_AUDIO_SOURCE  // XXX for backwards compatibility&lt;br /&gt;
     &#039;m&#039; = INPUT_SWITCH_MODE_TO_IRADIO&lt;br /&gt;
     &#039;n&#039; = INPUT_SWITCH_MODE_TO_MEDIA_PLAYER&lt;br /&gt;
     &#039;o&#039; = INPUT_SWITCH_MODE_TO_LINE_IN&lt;br /&gt;
     &#039;p&#039; = INPUT_RC_UP&lt;br /&gt;
     &#039;q&#039; = INPUT_RC_DOWN&lt;br /&gt;
     &#039;r&#039; = INPUT_FM_STEREO_MONO_SWITCH&lt;br /&gt;
     &#039;s&#039; = INPUT_PLAY&lt;br /&gt;
     &#039;t&#039; = INPUT_PAUSE&lt;br /&gt;
     &#039;u&#039; = INPUT_PRESET_MENU&lt;br /&gt;
     &#039;v&#039; = INPUT_CONFIGURE_MENU&lt;br /&gt;
     &#039;w&#039; = INPUT_SWITCH_MODE_TO_FM&lt;br /&gt;
     &#039;x&#039; = INPUT_SEEK_DOWN&lt;br /&gt;
     &#039;y&#039; = INPUT_SEEK_UP&lt;br /&gt;
     &#039;0&#039; = INPUT_REPEAT&lt;br /&gt;
 #        // don&#039;t use &#039;1&#039;, it&#039;s reserved for unused keys&lt;br /&gt;
     &#039;2&#039; = INPUT_FORWARD&lt;br /&gt;
     &#039;3&#039; = INPUT_INFO&lt;br /&gt;
     &#039;4&#039; = INPUT_EQ&lt;br /&gt;
     &#039;5&#039; = INPUT_MENU_TOP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If anyone would like to copy all the lircd config files from /etc/config/ give them the corresponding radio names and send them to &amp;lt;lirc@bartelmus.de&amp;gt; it would give anyone missing a remote control the chance to use their radios without having to install Sharpfin. These files describe all the signals required to controll all the radios factory fitted with an IR sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Diagnosing problems ===&lt;br /&gt;
&lt;br /&gt;
If the remote control doesn&#039;t work at all then restart lircd from the command line and see what it outputs. To restart it is first necessary to stop any running instance of lircd.&lt;br /&gt;
&lt;br /&gt;
Find the process number using:&lt;br /&gt;
 # ps -A | grep lirc&lt;br /&gt;
&lt;br /&gt;
This should give an output something like:&lt;br /&gt;
&lt;br /&gt;
  102 root      1464 S &amp;lt;  /usr/sbin/lircd -d /dev/lirc/0 /etc/config/lircd_conf&lt;br /&gt;
  133 root      2280 S    grep lirc&lt;br /&gt;
&lt;br /&gt;
If nothing is returned lircd isn&#039;t running. In this case the number we need is 102, so use:&lt;br /&gt;
&lt;br /&gt;
 # kill -9 102&lt;br /&gt;
&lt;br /&gt;
and then simply:&lt;br /&gt;
&lt;br /&gt;
 # lircd&lt;br /&gt;
&lt;br /&gt;
and see what errors are shown, hopefully they&#039;re meaningful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tested on Logik IR200 &amp;amp; BT radio.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
sources:&lt;br /&gt;
&lt;br /&gt;
[http://groups.google.co.uk/group/sharpfin/browse_thread/thread/1b78b9adefcd8067 Google groups thread on this]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://logikir100.tripod.com/Logik.htm Logic]&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://www.sharpfin.org/index.php?title=Config.txt_File Config.txt]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
How to add remote control function to a BT radio:&lt;br /&gt;
&lt;br /&gt;
[http://logikir100.tripod.com/irmod.htm IRmod]&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Enabling_Login&amp;diff=204</id>
		<title>Enabling Login</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Enabling_Login&amp;diff=204"/>
		<updated>2025-06-08T12:41:05Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=0&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Keep [[Up-To-Date]] by e-mail with Sharpfin updates and releases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enabling Login is provided for developers and programmers.  It enables alternative software to be developed for the radio.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In order to enable logins on the radio, it is necessary to apply a patch.&lt;br /&gt;
To do this, you will need the following:&lt;br /&gt;
&lt;br /&gt;
* A PC running Windows or Linux&lt;br /&gt;
* For Windows PCs, you will need to install Cygwin&lt;br /&gt;
* The Patch Server&lt;br /&gt;
* A Patch File&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Patch.jpg]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Warning ==&lt;br /&gt;
&lt;br /&gt;
Please read this: [[10 Sure-Fire Ways to Trash Your Radio]]&lt;br /&gt;
&lt;br /&gt;
Patching your radio involved writing to part of the flash memory which is normally read-only.  Patching involved running scripts we have developed and tested on only a small number of radios.&lt;br /&gt;
&lt;br /&gt;
By patching the radio, you acknowledge that we cannot be held responsible for any losses incurred should the patching fail, you render the radio useless or you lock yourself out of your radio.&lt;br /&gt;
&lt;br /&gt;
Please be aware that the only known method of recovery is the use of JTAG, and that route has not been rigorously developed and tested by ourselves.&lt;br /&gt;
&lt;br /&gt;
== Video Guides ==&lt;br /&gt;
&lt;br /&gt;
If you want a very basic introduction, see the diagrams on the [[Changing Your Radio]] page.&lt;br /&gt;
&lt;br /&gt;
* Sharpfin Video Guide to Patching the Reciva Radio: [http://www.youtube.com/watch?v=WsRVQp1Ug7A Part 1 - Setup]&lt;br /&gt;
* Sharpfin Video Guide to Patching the Reciva Radio: [http://www.youtube.com/watch?v=QQN5oDGFcBE Part 2 - Patching]&lt;br /&gt;
* Sharpfin Video Guide to Patching the Reciva Radio: [http://www.youtube.com/watch?v=kocuTj7RuDk Part 3 - Post-Patch]&lt;br /&gt;
&lt;br /&gt;
== Patch Files ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.sharpfin.org/images/7/7b/PatchingTheRecivaRadio.pdf PatchingTheRecivaRadio.pdf]&lt;br /&gt;
* Download the patchserver and patchfiles from the [[Releases]] page&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT install the patchserver into a directory containing spaces.  With Windows XP, the desktop is in a subdirectory which contains spaces, unlike the video example which was run on Vista&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE: There are two different ways of driving the LCD, and our program only caters for one of them at the moment.  If you don&#039;t see anything on the screen when running the test, it is highly likely that you have the &#039;other one&#039;.  You can still patch the radio, but will get no indication on the screen of what is going on, so take care.  We are working on updating our libreciva library to accomodate the other mechanism, and need testers, so please volenteer if you can spare the time&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE: We recommend uninstalling any previous third party patches (e.g. ssh) before applying these patches, due to the memory and disk requirements of the radio&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT XP please read:&#039;&#039;&#039;  The directory paths for both Patchserver and Patchfiles must have NO spaces. It would appear wise to also install cgywin in a directory without spaces. All seem to have fewer problems if installed on C:\ rather than any other drive label.  In addition, whilst the Windows Firewall may have &amp;quot;allowed&amp;quot; the applications, it can cause issues, so one might consider turning off the Firewall for the duration of a patching operation.&lt;br /&gt;
&lt;br /&gt;
== Once Installed ==&lt;br /&gt;
&lt;br /&gt;
Once you have enabled login, you will find that a webserver and a login server are running.  With these, you can:&lt;br /&gt;
&lt;br /&gt;
* Look at the radio configuration&lt;br /&gt;
* Run your own scripts and programmes&lt;br /&gt;
* Enable new features on the radio, such as alarms see [[Config.txt_File]]&lt;br /&gt;
* Download a Reciva firmware upgrade patchfile. Please Read [[Changing Firmware]] before attempting to do so&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
History of installations and related notes below this line&lt;br /&gt;
&lt;br /&gt;
== Installed ==&lt;br /&gt;
&lt;br /&gt;
The login has been enabled on a number of radios ... here is a snapshot of the feedback.  If you want to ask questions of other radio users, please use the groups via the [[Up-To-Date]] page:&lt;br /&gt;
&lt;br /&gt;
* 11 January 2009, Strong SRT1000W&lt;br /&gt;
* 06 September 2008, Ipdio Style&lt;br /&gt;
* 23 September 2007, Logik IR100, SC, 0.2&lt;br /&gt;
* 24 September 2007, Logik IR100, Some issues with getting the file to run as Windows/Vista renaming things a bit, and confusion over 01 and 01b file names ... see discussion on the Reciva forums., TS, 0.3&lt;br /&gt;
* 24 September 2007, IPDIO, Great work!, PP, 0.3&lt;br /&gt;
* 28 September 2007, Logik IRMA1, SC, 0.3&lt;br /&gt;
* 28 September 2007, Logik IR100, Couldn&#039;t get the patchserver to work in windows vista but linux worked ok  ), ST, 0.3&lt;br /&gt;
* 6 October 2007, Tevion 5404, The LCD text did NOT show during update, SJ, 0.3&lt;br /&gt;
* 10 October 2007, Logik IR100, Additional... I installed the base package first followed by the www_0.4. The web page installed at www-0.4 has a broken link to this form. (i found it using telnet :-) ). I also nothiced that the radio likes to be properly power cycled after changing the network parameters. Otherwise I have had it go mute and be reluctant to get out over the net. As soon as I powercycled it, everything is fine. I&#039;d just like to say I think you&#039;re doing a brilliant job here. I really appreciate the work you guys have done. (I also love the idea of telnetting to my radio :-) ) Cheers. AY, AY, 0.4&lt;br /&gt;
* 11 October 2007, Logik IR100, TM, 0.4&lt;br /&gt;
* 11 October 2007, Logik IR100, TM, 0.4&lt;br /&gt;
* 15 October 2007, Logik IR100, I used the linux patchserver programme. For some reason the reciva station scan always timed out through the patchserver. The lookups were working, just happening too slowly. However I tried the test-patch which worked, so I went with the base patch and that worked fine too. Now I&#039;m going to start screwing up my courage to go for a firmware upgrade. Many thanks for all your work., NS, 0.4&lt;br /&gt;
* 16 October 2007, Logik IR100, LJ, 0.4&lt;br /&gt;
* 16 October 2007, Logik IR100, Everything worked OK! :-) Thank you for the all the hard work! Looking forward to see some new stuff. Keep up the good work!, GX, 0.4&lt;br /&gt;
* 16 October 2007, Logik IR100, AN, 0.4&lt;br /&gt;
* 19 October 2007, Logik IR100, Now to add the webserver base and try an upgrade..., PK, 0.4&lt;br /&gt;
* 20 October 2007, Magicbox Imp Adapt, Didnt get the message for the test patch, and to telnet in from my linux box, telnet -K &amp;lt;ipadd&amp;gt;  needs to be run to avoid automatic encryption negotiation, SC, 0.4&lt;br /&gt;
* 20 October 2007, Logik IR100, Just to let you know the Web server pages do not apear to work coprectly in Firefox (you dont get the menu&#039;s on the left) but are fine in internet explorer. Top job keep up the good work. :), PS, 0.4&lt;br /&gt;
* 20 October 2007, Logik IR100, AN, 0.4&lt;br /&gt;
* 22 October 2007, Logik IR100, (also complete new firmware to fix upnp), JR, 0.4&lt;br /&gt;
* 22 October 2007, Logik IR100, AN, 0.4&lt;br /&gt;
* 22 October 2007, Logik IR100, Lol. Thanx duderz. Looking forward to whatever you can do with the Barracuda.  Cheerz., TM, 0.5&lt;br /&gt;
* 28 October 2007, Logik IR100, The patch installed successfully, thank you. Very useful piece of work! Again, many thanks!, PI, 0.5&lt;br /&gt;
* 1 November 2007, Logik IR100, Congrats on all the hard work - very impressive.  Many thanks, FR, FR, 0.5&lt;br /&gt;
* 8 November 2007, Logik IR100, SM, 0.5&lt;br /&gt;
* 12 November 2007, Logik IR100, Installed latest IPDio software on IR100 - seems to be ok and I now have a wifi signal meter. IP address entering method has changed from menu &#039;pick and choose&#039; selection method to changing default value of 0 for each number by using knob rotation instead, JN, 0.5&lt;br /&gt;
* 16 November 2007, Logik IR100, AN, 0.5&lt;br /&gt;
* 17 November 2007, Logik IR100, Could you create a sample-file for that function ? -&amp;gt;add alarm .. &lt;br /&gt;
* 30 January 2008, Tangent Quatro, Linux patch sever 0.5, patchfile 0.3&lt;br /&gt;
https://www.sharpfin.org/images/1/14/LCD-menu.jpg, TM, 0.5&lt;br /&gt;
* 6 Feb 2008, Tangent Quattro, Put on Server and basepatch, the 257-a-421-a-041 service pack on the Quattro allowed totally unhindered editing of the config989.txt file to make menu&#039;s much more friendly. (M0AUR)&lt;br /&gt;
* 8 Feb 2008, Argon iNet 1, to edit config935.TXT (stations-history, history-size, force-metadata) and all_radios.txt (reply-button-function). Works fine. These options not localised in Danish language though.&lt;br /&gt;
* 7 Aug 2008, Bush TR2015&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks must go to rdk for his help in getting us going with this process !!!&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=MediaWiki:Common.css&amp;diff=203</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=MediaWiki:Common.css&amp;diff=203"/>
		<updated>2025-06-08T12:38:30Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.footer_image {&lt;br /&gt;
  margin-top:9px;&lt;br /&gt;
  width:100%;&lt;br /&gt;
  height:178px;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  background-image:url(/images/5/53/Sharpfin_water.png)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.note {&lt;br /&gt;
	background-position: left 7px top 50%;&lt;br /&gt;
	padding: 0.5em 0.5em 0.5em 40px;&lt;br /&gt;
	margin: 0.5em 0;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
	color: #333;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	border: 1px solid #ddd;&lt;br /&gt;
}&lt;br /&gt;
.note-inline {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.note-info {&lt;br /&gt;
	background-color: #eaf3ff;&lt;br /&gt;
	color: #333;&lt;br /&gt;
	/* [[File:OOjs_UI_icon_information-progressive.svg]] */&lt;br /&gt;
	background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg);&lt;br /&gt;
	background-size: 25px;&lt;br /&gt;
	border-color: #a3caff;&lt;br /&gt;
	padding-left: 40px;&lt;br /&gt;
	min-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
.note-reminder {&lt;br /&gt;
	background-color: #fff9ea;&lt;br /&gt;
	color: #333;&lt;br /&gt;
	/* [[File:OOjs_UI_icon_lightbulb-yellow.svg]] */&lt;br /&gt;
	background-image: url(https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg);&lt;br /&gt;
	background-size: 25px;&lt;br /&gt;
	border-color: #fc3;&lt;br /&gt;
	min-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
.note-warn {&lt;br /&gt;
	background-color: #fff9ea;&lt;br /&gt;
	color: #333;&lt;br /&gt;
	/* [[File:OOjs_UI_icon_alert-warning.svg]] */&lt;br /&gt;
	background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg);&lt;br /&gt;
	background-size: 25px;&lt;br /&gt;
	border-color: #fc3;&lt;br /&gt;
	min-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.note-error {&lt;br /&gt;
	background-color: #fee7e6;&lt;br /&gt;
	color: #333;&lt;br /&gt;
	/* [[File:OOjs_UI_icon_notice-destructive.svg]] */&lt;br /&gt;
	background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg);&lt;br /&gt;
	background-size: 25px;&lt;br /&gt;
	border-color: #c33;&lt;br /&gt;
	min-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
	html.skin-theme-clientpref-night .note {&lt;br /&gt;
		background-color: transparent;&lt;br /&gt;
	    color: inherit;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
    /* automatic mode */&lt;br /&gt;
	html.skin-theme-clientpref-os .note {&lt;br /&gt;
		background-color: transparent;&lt;br /&gt;
    	color: inherit;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Wishlist&amp;diff=202</id>
		<title>Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Wishlist&amp;diff=202"/>
		<updated>2025-06-08T12:36:40Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;= Alternative firmware wishlist =  The following list shows some features which would be possible to implement with the new firmware. This list is not complete, neither definitive, feel free to add your own ideas.  * Show the time of day while playing audio  * Running the radio without depending on the Reciva databases  * Support for additional audio codecs (ogg, flac, aacp etc) and network protocols  * New Feature : play stations that use flash embedded players   * Bett...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Alternative firmware wishlist =&lt;br /&gt;
&lt;br /&gt;
The following list shows some features which would be possible to implement with the new firmware. This list is not complete, neither definitive, feel free to add your own ideas.&lt;br /&gt;
&lt;br /&gt;
* Show the time of day while playing audio&lt;br /&gt;
&lt;br /&gt;
* Running the radio without depending on the Reciva databases&lt;br /&gt;
&lt;br /&gt;
* Support for additional audio codecs (ogg, flac, aacp etc) and network protocols&lt;br /&gt;
&lt;br /&gt;
* New Feature : play stations that use flash embedded players &lt;br /&gt;
&lt;br /&gt;
* Better control over audio: equalizer, panning, etc.&lt;br /&gt;
&lt;br /&gt;
* The Barracuda provides an USB 1.1 Host interface - playing from USB storage device ?&lt;br /&gt;
&lt;br /&gt;
* Accessibility features, e.g. talking menus for the blind&lt;br /&gt;
&lt;br /&gt;
* Improvement : Direct access to Alarm and Sleep time settings form keyboard.&lt;br /&gt;
&lt;br /&gt;
* Improvement : Stable access to Windows share folders, even if the number of files is huge !&lt;br /&gt;
&lt;br /&gt;
* Improvement : Stable implementation of UPnP .&lt;br /&gt;
&lt;br /&gt;
* New Feature : Offer the ability to display as a &amp;quot;ticker&amp;quot; the headlines of an RSS flux.&lt;br /&gt;
&lt;br /&gt;
* New Feature : Embedded webserver to modify the configuration of the radio.&lt;br /&gt;
&lt;br /&gt;
* New Feature : Checking periodically a pop3 account and display the number of unread mail.&lt;br /&gt;
&lt;br /&gt;
* Improvement : &amp;quot;my podcast&amp;quot; feature: Possibility to enqueue in the playlist all the files in a podcast. &lt;br /&gt;
&lt;br /&gt;
* Improvement : Wake up to a radio program.&lt;br /&gt;
&lt;br /&gt;
* Improvement : Offer the ability to pause a podcast.&lt;br /&gt;
&lt;br /&gt;
* ... More here ...&lt;br /&gt;
&lt;br /&gt;
* Why not support for radiotime.com?  Free for open source projects http://developer.radiotime.com&lt;br /&gt;
&lt;br /&gt;
* New feature : Support server side plug-ins on web server - e.g. PHP&lt;br /&gt;
&lt;br /&gt;
* Improvement : Clock on Display when playing.&lt;br /&gt;
&lt;br /&gt;
* Improvement : Enable Back button to access the sleep timer control from the playing screen.&lt;br /&gt;
&lt;br /&gt;
* Improvement : Option to get rid of that Damn infantile &#039;Real Enabled&#039; banner. - Replace with a clock display?&lt;br /&gt;
&lt;br /&gt;
* Improvement : Option to choose the wake to any station from &#039;My Stations&#039; rather than JUST   the presets.&lt;br /&gt;
&lt;br /&gt;
* New Feature : Support for LastFM and Pandora from non US locations&lt;br /&gt;
&lt;br /&gt;
* New Feature : Add usb memory stick and input station, stream &amp;amp; podcast addresses through the Sharkfin interface.&lt;br /&gt;
&lt;br /&gt;
* New Feature : An option to import My Stations/streams/podcasts etc from Reciva to safe storage on the device.&lt;br /&gt;
&lt;br /&gt;
* New Feature : A means of patching the config files through a more user friendly frontend integrated into the Sharkfin browser would be a real leap forward for many - vi is a real headbanger for us not so techy folk! Even being able to use vi from within the browser would be a leap forward.&lt;br /&gt;
&lt;br /&gt;
* New Feature : Is it possible or practical that a radio button type frontend could be used to create and execute a script on the radio? I am pretty sure that some firmwares write to the config files when they update.&lt;br /&gt;
&lt;br /&gt;
* New Feature : At the moment, the scroll control on an IR100 is &#039;dead&#039; while a station is playing. This is a waste, it would be better if it did something (anything). I suggest that scrolling through the stations in My Stuff would be very handy, and indeed is intuitively what it &amp;quot;should&amp;quot; do.&lt;br /&gt;
** I agree with this, as has already been tried, it is supposed to be a volume control, it is beyond me why so many manufacturers prefer the two knob design, as one would presumably cut costs.&lt;br /&gt;
** I would say that the only intuitive thing for this to do would be to rotate through either history or my stations as you suggest, and maybe a mode for adjusting a sleep function when an alarm sounds, turn to the required time and press to set.&lt;br /&gt;
** Firmware v257-a-756-a-186 allows to use the scroll button to browse through the internet stations. (Currently no source available for this version! Has this been fixed for the IR100, too?)  --[[User:Hp|Hp]] 13:01, 3 January 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
* Improvement : &amp;quot;snooze&amp;quot; button as a copy of the &amp;quot;back&amp;quot; button (OKANO TR 2608i / Sanyo R227) --[[User:Hp|Hp]] 13:01, 3 January 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
* Improvement : instead of &amp;quot;shift&amp;quot; to select station presets 5-8, use multiple keypresses (seen on Roku SoundBridge) --[[User:Hp|Hp]] 13:01, 3 January 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
* Improvement : more station presets (e.g. 16 instead of 8), selected using multiple keypresses --[[User:Hp|Hp]] 13:01, 3 January 2009 (CET)&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Watchdog&amp;diff=201</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Watchdog&amp;diff=201"/>
		<updated>2025-06-08T12:36:07Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Overview ==  The Libreciva dog function provides control of the processor&amp;#039;s watchdog timer.  In order to use the library function, you must include the header file:  &amp;lt;syntaxhighlight&amp;gt; #include &amp;quot;dog.h&amp;quot; &amp;lt;/syntaxhighlight&amp;gt;  === int dog_init()  and  void dog_exit() ===  These functions are used to initialise and shut down the watchdog system. dog_init() returns true on success, or false if there was an error accessing the hardware.  Note that dog_exit() simply leaves...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The [[Libreciva]] dog function provides control of the processor&#039;s watchdog timer.&lt;br /&gt;
&lt;br /&gt;
In order to use the library function, you must include the header file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;quot;dog.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== int dog_init()  and  void dog_exit() ===&lt;br /&gt;
&lt;br /&gt;
These functions are used to initialise and shut down the watchdog system. dog_init() returns true on success, or false if there was an error accessing the hardware.&lt;br /&gt;
&lt;br /&gt;
Note that dog_exit() simply leaves the watchdog in whatever state it has been set - if you want the dog disabled, you must call dog_disable() before calling dog_exit().&lt;br /&gt;
&lt;br /&gt;
=== int dog_enable()  and  int dog_disable() ===&lt;br /&gt;
&lt;br /&gt;
These functions are used to enable and disable the watchdog.  the functions return 0 on success, or -1 if there is an error accessing the hardware.&lt;br /&gt;
&lt;br /&gt;
=== int dog_isenabled() ===&lt;br /&gt;
&lt;br /&gt;
This function reports the current enable (true) or disable (false) state of the watchdog.  Note that this function simply reports which dog_enable() / dog_disable() function was last called from this application.  It is not possible to read the enabled status back from the hardware.&lt;br /&gt;
&lt;br /&gt;
=== int dog_kick() ===&lt;br /&gt;
&lt;br /&gt;
This function is used to kick the dog.  It returns 0 on success, or -1 if there has been a problem accessing the hardware.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Up-To-Date&amp;diff=200</id>
		<title>Up-To-Date</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Up-To-Date&amp;diff=200"/>
		<updated>2025-06-08T12:35:30Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Let&amp;#039;s Get Talking ==  We have also created an interactive mailing list which you can use to communicate with fellow Reciva internals enthusiasts on [http://groups.google.co.uk/group/sharpfin sharpfin on Google Groups].  We encourage you to share discoveries and problems, code and patches, however ....  We still encourage (and need) you to carry on editing, updating and maintaining this website, as it is the definitive resource for the project.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Let&#039;s Get Talking ==&lt;br /&gt;
&lt;br /&gt;
We have also created an interactive mailing list which you can use to communicate with fellow Reciva internals enthusiasts on [http://groups.google.co.uk/group/sharpfin sharpfin on Google Groups].  We encourage you to share discoveries and problems, code and patches, however ....&lt;br /&gt;
&lt;br /&gt;
We still encourage (and need) you to carry on editing, updating and maintaining this website, as it is the definitive resource for the project.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:Wiggler2.png&amp;diff=199</id>
		<title>File:Wiggler2.png</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:Wiggler2.png&amp;diff=199"/>
		<updated>2025-06-08T12:33:46Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:SharpflashPinBoardOn.jpg&amp;diff=198</id>
		<title>File:SharpflashPinBoardOn.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:SharpflashPinBoardOn.jpg&amp;diff=198"/>
		<updated>2025-06-08T12:33:26Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:SharpflashPinBoardOff.jpg&amp;diff=197</id>
		<title>File:SharpflashPinBoardOff.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:SharpflashPinBoardOff.jpg&amp;diff=197"/>
		<updated>2025-06-08T12:33:03Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:SharpflashWigglerBackside.jpg&amp;diff=196</id>
		<title>File:SharpflashWigglerBackside.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:SharpflashWigglerBackside.jpg&amp;diff=196"/>
		<updated>2025-06-08T12:32:45Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:SharpflashCableExample.jpg&amp;diff=195</id>
		<title>File:SharpflashCableExample.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:SharpflashCableExample.jpg&amp;diff=195"/>
		<updated>2025-06-08T12:32:26Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Unbricking&amp;diff=194</id>
		<title>Unbricking</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Unbricking&amp;diff=194"/>
		<updated>2025-06-08T12:32:01Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
If your radio bricked after you edited the config file, it is possible to unbrick it by removing the Barracuda module and placing it in a radio that has a different hardware-id e.g. a module from an Intempo (761), inside a Logik IR100 (1012).  Once powered up, you can login and restore the config file edits (since the new radio boots using the config files for its radio hardware-id, not the one you messed up).&lt;br /&gt;
&lt;br /&gt;
The following procedure will take you through the restoration of your radio using a simple JTAG cable, with software we have provided.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
In order to recover a bricked radio, you will need:&lt;br /&gt;
&lt;br /&gt;
* JTAG hardware&lt;br /&gt;
* Software for flashing over JTAG&lt;br /&gt;
* An image to flash to the radio (see [[Making a backup]])&lt;br /&gt;
* A lot of patience&lt;br /&gt;
&lt;br /&gt;
== JTAG hardware ==&lt;br /&gt;
&lt;br /&gt;
&#039;Wiggler&#039; compatible cables are a popular low-cost cable, and well supported by the free jtag tools. Plans to make your own are widely available, and prebuilt ones can be found cheaply on ebay and similar sites.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;universal&amp;quot; wiggler will come with bare wires which can be soldered to the [[Media:Barracuda-board-outline.jpg|jtag test points]] on the barracuda board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Wiggle.png|Wiggler Schematic]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Jtag-soldering.jpg]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N.B. The Barracuda board needs to be installed in a powered up radio (standby is OK) for the JTAG process to work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sharpflash supports only wigglers connected on the &#039;&#039;&#039;Parallel ports&#039;&#039;&#039; (LPT1, LPT2, LPT3) of your computer. Since these ports become very rare there may be the need to update Sarpflash to support wigglers on USB ports etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A cable and the JTAG unit that worked in a backup/restore test were: &lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpfinWigglerExample.jpg|200px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashCableExample.jpg|500px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Note that the cable for this JTAG unit has both a male end (to be attached to the PC) and a female end that will be directly connected to the JTAG unit. The cable should NOT be too long (max 5m) and it should be a &amp;quot;normal&amp;quot; printer cable (DB-25), but &#039;&#039;&#039;not&#039;&#039;&#039; with 36 pins on the female end (like some very &#039;&#039;&#039;old&#039;&#039;&#039; printers had/have), but with the D-Sub (because it is D-shaped) 25pin on both sites (D-Sub M/F 25pin).&lt;br /&gt;
&lt;br /&gt;
The off-the-shelf unit should have the necessary bare wires to solder to the Reciva board. The only problem with those commercial wigglers is their usage of input pins. Hence, it may be necessary to adjust some of the inputs, e.g:&lt;br /&gt;
&lt;br /&gt;
[[Image:SharpflashWigglerBackside.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Soldering ===&lt;br /&gt;
The bare cables of the JTAG unit must be soldered directly to the Reciva board on the JTAG interface.&lt;br /&gt;
It seems that only Ground (GND) and the power supply (VCC) are available as pins on the board, for the rest we need to solder the bare cables directly to the gold-plated contact points.&lt;br /&gt;
&lt;br /&gt;
We need at least 4 of those (excluding also the nTrst point, that was not always needed in our tests).&lt;br /&gt;
Hint: Put very little solder on the points of the Reciva board first, then a little bit on the bare wire and then connect them using a solder iron. This should not be too difficult and you do not need special soldering skills, just be sure to not damage the gold-plated contact points. An alternative that worked too is to build a transparent board (plastic, plexi) where you can plug in you bares, that you will place just above the Reciva board: &lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashPinBoardOff.jpg|200px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashPinBoardOn.jpg|500px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
But note that to construct the transparent board and fix the cables such that they are perfectly connected to the Reciva board may be even more difficult than solder the 4 + 2 wires to the board.&lt;br /&gt;
&lt;br /&gt;
Or see [http://recivarefuge.net/sharpfin/Barracuda%20connector.pdf Barracuda JTAG Connector]for instructions to make a custom connector which does not require soldering to the gold pads on the Reciva module.&lt;br /&gt;
&lt;br /&gt;
10/10/12 : [[User:Philipp]] used a off-the-shelf wiggler based on [[Media:wiggler2.png|this]] circuit that needed small modification (and soldering skills), see images above&lt;br /&gt;
&lt;br /&gt;
19/08/08 : I used a wiggler based on [[Media:wiggler2.png|this]] circuit. This worked 100% on the first attempt. Note this uses HC rather than AC logic, which is advised in several places.&lt;br /&gt;
&lt;br /&gt;
== JTAG Flashing Software ==&lt;br /&gt;
&lt;br /&gt;
The application sjf2410, along with the error correction code from the linux kernel have been modified to produce a bespoke utility for the baracuda module&#039;s NAND flash.  It uses the wiggler cable in the parallel port.&lt;br /&gt;
&lt;br /&gt;
* [https://www.sharpfin.org/images/a/a4/Sharpflash_v0.4.zip Sharpflash v 0.4] - Source Code* (&#039;&#039;&#039;OLD:&#039;&#039;&#039; [https://www.sharpfin.org/images/c/c1/Sharpflash-src-0.1.tar.bz2 Sharpflash v 0.1 Alpha])&lt;br /&gt;
* [[Sharpflash Bugs]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;* Sharpflash will be only provided as a source code snapshot (from github) since it is for more advanced users only which should be able to make/build the utility and adapt it&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Hardware&lt;br /&gt;
** A parallel DB-25 female port&lt;br /&gt;
** Reciva board (and the radio itself, we need to plug the board into the Radio&#039;s main board too to be able to run Sharpflash, after soldering the bare wires of the wiggler)&lt;br /&gt;
** Cable (depending on your JTAG unit, LPT cable, DB-25 M/F 25 pin)&lt;br /&gt;
** Solder iron&lt;br /&gt;
* Software&lt;br /&gt;
** Linux with root account OR Win 32bit w/ Cygwin and giveio.sys&amp;lt;sup&amp;gt;[[#foot_giveio|giveio]]&amp;lt;/sup&amp;gt; installed (we could think of supporting also Inpout32.dll&amp;lt;sup&amp;gt;[[#foot_inpout32dll|inpout32]]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
** Newest version of Sharpflash&lt;br /&gt;
&lt;br /&gt;
Sharpflash v 0.4 was successfully tested under Windows (Cygwin with ioperm and giveio) and under Ubuntu Linux (both running in a 32 bit environment).&lt;br /&gt;
To use Sharpflash with a 64bit version of windows we may need Inpoutx64.dll&amp;lt;sup&amp;gt;[[#foot_inpoutx64dll|inpout64]]&amp;lt;/sup&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
This version of sharpflash supports reading and writing of the NAND flash using the wiggler parallel port interface. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This software is far from perfect. It takes a lot of time to restore/backup the whole NAND flash&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sharpflash Options ===&lt;br /&gt;
&lt;br /&gt;
  $ ./sharpflash.exe -h&lt;br /&gt;
  &lt;br /&gt;
  Sharpfin Flash Programmer. https://www.sharpfin.org/&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  sharpflash [-p 1|2|3] [-r|-w filename start length ]&lt;br /&gt;
  sharpflash [-p 1|2|3] [-b]&lt;br /&gt;
  &lt;br /&gt;
    -r -w      Read flash to file, or write file to flash&lt;br /&gt;
    -b         Check flash for bad blocks&lt;br /&gt;
    -p &amp;lt;n&amp;gt;     n = 1, 2 or 3. Use LPT1 (default) LPT2 or LPT3 parallel port&lt;br /&gt;
    filename   Destination / source filename, the file must be in nanddump format&lt;br /&gt;
    start      Hex start address in NAND for read/write, must be a multiple of 0x4000&lt;br /&gt;
    length     Hex length to read/write. if file is too short,&lt;br /&gt;
               NAND will be filled with 0xFF. Must be a multiple of 0x4000&lt;br /&gt;
  &lt;br /&gt;
  If no r,w or b argument is supplied, the program just tries to read the&lt;br /&gt;
  JTAG device ID of the flash and CPU using the configured parallel port,&lt;br /&gt;
  &lt;br /&gt;
  For r,w and b commands, the output data contains:&lt;br /&gt;
  &lt;br /&gt;
     w - page written OK&lt;br /&gt;
     r - page read OK&lt;br /&gt;
     . - page check OK&lt;br /&gt;
     b - page/block identified as bad&lt;br /&gt;
     B - page/block has just been marked bad&lt;br /&gt;
  &lt;br /&gt;
  v0.4, https://www.sharpfin.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reading Flash Images ===&lt;br /&gt;
&lt;br /&gt;
You can make a back-up of your flash via JTAG using the following format commands:&lt;br /&gt;
&lt;br /&gt;
 sharpflash -r kernel-mtd.bin 004000 0fc000&lt;br /&gt;
&lt;br /&gt;
Will extract the contents of the kernel partition into &#039;kernel-mtd1.bin&#039;, which is a &#039;&#039;nanddump&#039;&#039; format file, skipping any bad sectors as it goes.  Have a look at [[Reciva NAND Flash]] for the background on the flash structure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - https://www.sharpfin.org/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Reading NAND Flash:&lt;br /&gt;
  destination   = kernel-mtd1.bin&lt;br /&gt;
  start addr    = 0x4000&lt;br /&gt;
  length        = 0xFC000&lt;br /&gt;
 .&lt;br /&gt;
 Address  Progress                          Remaining&lt;br /&gt;
 -------  --------------------------------  ---------&lt;br /&gt;
 0004000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr    9h 12m&lt;br /&gt;
 0008000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr    9h 11m&lt;br /&gt;
 000C000  rrrrrr&lt;br /&gt;
&lt;br /&gt;
=== Getting Bad Block Information ===&lt;br /&gt;
&lt;br /&gt;
This is not needed for programming, however it is recommended that you keep a record of the bad blocks marked by the manufacturer as bad, because this information is stored in re-programmable memory, and it may be useful to be able to distinguish between manufacturer-defined bad blocks, and user-defined bad blocks.&lt;br /&gt;
&lt;br /&gt;
 sharpflash -b&lt;br /&gt;
&lt;br /&gt;
The program will output several lines, with each &#039;.&#039; representing a 16K block which is marked as good, and a &#039;b&#039; for each block which is marked bad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - https://www.sharpfin.org/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Checking NAND Blocks&lt;br /&gt;
  0000000: ................................................................&lt;br /&gt;
  0100000: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............&lt;br /&gt;
&lt;br /&gt;
=== Writing Flash Images ===&lt;br /&gt;
&lt;br /&gt;
This process takes a long time to run - roughly 80 seconds per 16KBytes, so a full 16Mb flash will take about 24 hours.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When you are choosing your images to write, make sure that they are in &#039;nanddump&#039; format.  Writing images to flash that are &#039;&#039;not&#039;&#039; in &#039;nanddump&#039; format will result in valid blocks being marked bad&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sharpflash -w boot-mtd.bin 000000 04000&lt;br /&gt;
&lt;br /&gt;
Will write the boot sector from the file boot-mtd.bin, and will produce an output similar to this:&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - https://www.sharpfin.org/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Writing NAND Flash:&lt;br /&gt;
  source      = boot-mtd.bin&lt;br /&gt;
  start addr  = 0x0&lt;br /&gt;
  length      = 0x04000&lt;br /&gt;
 .&lt;br /&gt;
 Address  Progress                          Remaining&lt;br /&gt;
 -------  --------------------------------  ---------&lt;br /&gt;
 0000000  wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww    0h 00m&lt;br /&gt;
&lt;br /&gt;
If you want to restore your whole radio nandumps, you may need all of the following commands:&lt;br /&gt;
  sudo ./sharpfin -w boot-mtd.bin   000000 004000&lt;br /&gt;
  sudo ./sharpfin -w kernel-mtd.bin 004000 0FC000&lt;br /&gt;
  sudo ./sharpfin -w root-mtd.bin   100000 D00000&lt;br /&gt;
  sudo ./sharpfin -w config-mtd.bin E00000 100000&lt;br /&gt;
  sudo ./sharpfin -w debug-mtd.bin  F00000 100000&lt;br /&gt;
&lt;br /&gt;
As above, the first number is the starting address and the second the nandump size (in hex).&lt;br /&gt;
Please double-check if these sizes/addresses are correct for your radio too (e.g. via a working sharpfin webserver backup page or just try to get the numbers from the file-size and calculate the &amp;quot;next&amp;quot; address respectively).&lt;br /&gt;
The formula of course is:&lt;br /&gt;
new address = old address + old size&lt;br /&gt;
(the order should always be boot, kernel, root, config, debug; but please double-check that too for your radio)&lt;br /&gt;
&lt;br /&gt;
= Interesting Information / Links =&lt;br /&gt;
&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Arm Programming Info]&lt;br /&gt;
* [http://openocd.berlios.de/ OpenOCD Support for NAND flash via the S3C2410&#039;s built in controller]&lt;br /&gt;
* [https://lists.berlios.de/pipermail/openocd-development/2007-March/000115.html patch supporting the K9F1208 Flash (similar to the K9F2808)]&lt;br /&gt;
* [http://openwince.sourceforge.net/jtag/ OpenWinCE JTAG tools]&lt;br /&gt;
* [http://jtager.cvs.sourceforge.net/jtager/jtager/doc/s3c2410.bsdl?view=log s3c2410.bsdl Support for OpenWinCE]&lt;br /&gt;
* [http://jtager.sourceforge.net jtager]&lt;br /&gt;
* [http://wiki.openmoko.org/wiki/Sjf2410-linux sjf2410 Used by the OpenMoko project]&lt;br /&gt;
* [http://www.mizi.com/developer/s3c2410x/ jflash-s3c2410]&lt;br /&gt;
* [http://www.freelabs.com/~whitis/electronics/jtag/ JTAG Information]&lt;br /&gt;
* [http://www.ens-lyon.fr/LIP/Pub/Rapports/RR/RR2006/RR2006-08.pdf Arm/Linux Booting method]&lt;br /&gt;
* [http://www.bioinspired.com/users/ajg112/electronics/parallelPort.shtml PC Parallel Port Access From Linux]&lt;br /&gt;
* [http://www.ixo.de/info/usb_jtag/ JTAG USB Programming Info]&lt;br /&gt;
* [http://www.ftdichip.com/Documents/ProgramGuides/FTCJTAGPG13.pdf FTDI Library, used by Altera ByteBlaster]&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_inpoutx64dll&amp;quot;&amp;gt;[http://logix4u.net/parallel-port/26-inpoutx64dll-for-win-xp-64-bit Windows IO port access on 64bit environment: inpoutx64.dll]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_inpout32dll&amp;quot;&amp;gt;[http://logix4u.net/component/content/article/14-parallel-port/16-inpout32dll-for-windows-982000ntxp Windows IO port access on 32bit environment: inpout32.dll]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_giveio&amp;quot;&amp;gt;[http://www.cs.ucr.edu/~eblock/pages/pictools/giveio.html Giveio.sys and Library Loader for Windows direct IO port access]&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:SharpfinWigglerExample.jpg&amp;diff=193</id>
		<title>File:SharpfinWigglerExample.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:SharpfinWigglerExample.jpg&amp;diff=193"/>
		<updated>2025-06-08T12:29:22Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:Wiggle.png&amp;diff=192</id>
		<title>File:Wiggle.png</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:Wiggle.png&amp;diff=192"/>
		<updated>2025-06-08T12:28:51Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=File:Jtag-soldering.jpg&amp;diff=191</id>
		<title>File:Jtag-soldering.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=File:Jtag-soldering.jpg&amp;diff=191"/>
		<updated>2025-06-08T12:28:18Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Unbricking&amp;diff=190</id>
		<title>Unbricking</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Unbricking&amp;diff=190"/>
		<updated>2025-06-08T12:27:55Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Introduction ==  If your radio bricked after you edited the config file, it is possible to unbrick it by removing the Barracuda module and placing it in a radio that has a different hardware-id e.g. a module from an Intempo (761), inside a Logik IR100 (1012).  Once powered up, you can login and restore the config file edits (since the new radio boots using the config files for its radio hardware-id, not the one you messed up).  The following procedure will take you th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
If your radio bricked after you edited the config file, it is possible to unbrick it by removing the Barracuda module and placing it in a radio that has a different hardware-id e.g. a module from an Intempo (761), inside a Logik IR100 (1012).  Once powered up, you can login and restore the config file edits (since the new radio boots using the config files for its radio hardware-id, not the one you messed up).&lt;br /&gt;
&lt;br /&gt;
The following procedure will take you through the restoration of your radio using a simple JTAG cable, with software we have provided.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
In order to recover a bricked radio, you will need:&lt;br /&gt;
&lt;br /&gt;
* JTAG hardware&lt;br /&gt;
* Software for flashing over JTAG&lt;br /&gt;
* An image to flash to the radio (see [[Making a backup]])&lt;br /&gt;
* A lot of patience&lt;br /&gt;
&lt;br /&gt;
== JTAG hardware ==&lt;br /&gt;
&lt;br /&gt;
&#039;Wiggler&#039; compatible cables are a popular low-cost cable, and well supported by the free jtag tools. Plans to make your own are widely available, and prebuilt ones can be found cheaply on ebay and similar sites.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;universal&amp;quot; wiggler will come with bare wires which can be soldered to the [[Media:Barracuda-board-outline.jpg|jtag test points]] on the barracuda board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Wiggle.png|Wiggler Schematic]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Jtag-soldering.jpg]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N.B. The Barracuda board needs to be installed in a powered up radio (standby is OK) for the JTAG process to work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sharpflash supports only wigglers connected on the &#039;&#039;&#039;Parallel ports&#039;&#039;&#039; (LPT1, LPT2, LPT3) of your computer. Since these ports become very rare there may be the need to update Sarpflash to support wigglers on USB ports etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A cable and the JTAG unit that worked in a backup/restore test were: &lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpfinWigglerExample.jpg|200px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashCableExample.jpg|500px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Note that the cable for this JTAG unit has both a male end (to be attached to the PC) and a female end that will be directly connected to the JTAG unit. The cable should NOT be too long (max 5m) and it should be a &amp;quot;normal&amp;quot; printer cable (DB-25), but &#039;&#039;&#039;not&#039;&#039;&#039; with 36 pins on the female end (like some very &#039;&#039;&#039;old&#039;&#039;&#039; printers had/have), but with the D-Sub (because it is D-shaped) 25pin on both sites (D-Sub M/F 25pin).&lt;br /&gt;
&lt;br /&gt;
The off-the-shelf unit should have the necessary bare wires to solder to the Reciva board. The only problem with those commercial wigglers is their usage of input pins. Hence, it may be necessary to adjust some of the inputs, e.g:&lt;br /&gt;
&lt;br /&gt;
[[Image:SharpflashWigglerBackside.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Soldering ===&lt;br /&gt;
The bare cables of the JTAG unit must be soldered directly to the Reciva board on the JTAG interface.&lt;br /&gt;
It seems that only Ground (GND) and the power supply (VCC) are available as pins on the board, for the rest we need to solder the bare cables directly to the gold-plated contact points.&lt;br /&gt;
&lt;br /&gt;
We need at least 4 of those (excluding also the nTrst point, that was not always needed in our tests).&lt;br /&gt;
Hint: Put very little solder on the points of the Reciva board first, then a little bit on the bare wire and then connect them using a solder iron. This should not be too difficult and you do not need special soldering skills, just be sure to not damage the gold-plated contact points. An alternative that worked too is to build a transparent board (plastic, plexi) where you can plug in you bares, that you will place just above the Reciva board: &lt;br /&gt;
&amp;lt;table border=0&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashPinBoardOff.jpg|200px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:SharpflashPinBoardOn.jpg|500px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
But note that to construct the transparent board and fix the cables such that they are perfectly connected to the Reciva board may be even more difficult than solder the 4 + 2 wires to the board.&lt;br /&gt;
&lt;br /&gt;
Or see [http://recivarefuge.net/sharpfin/Barracuda%20connector.pdf Barracuda JTAG Connector]for instructions to make a custom connector which does not require soldering to the gold pads on the Reciva module.&lt;br /&gt;
&lt;br /&gt;
10/10/12 : [[User:Philipp]] used a off-the-shelf wiggler based on [[Media:wiggler2.png|this]] circuit that needed small modification (and soldering skills), see images above&lt;br /&gt;
&lt;br /&gt;
19/08/08 : I used a wiggler based on [[Media:wiggler2.png|this]] circuit. This worked 100% on the first attempt. Note this uses HC rather than AC logic, which is advised in several places.&lt;br /&gt;
&lt;br /&gt;
== JTAG Flashing Software ==&lt;br /&gt;
&lt;br /&gt;
The application sjf2410, along with the error correction code from the linux kernel have been modified to produce a bespoke utility for the baracuda module&#039;s NAND flash.  It uses the wiggler cable in the parallel port.&lt;br /&gt;
&lt;br /&gt;
* [http://www.sharpfin.org/sharpfin/images/a/a4/Sharpflash_v0.4.zip Sharpflash v 0.4] - Source Code* (&#039;&#039;&#039;OLD:&#039;&#039;&#039; [http://www.sharpfin.org/sharpfin/images/c/c1/Sharpflash-src-0.1.tar.bz2 Sharpflash v 0.1 Alpha])&lt;br /&gt;
* [[Sharpflash Bugs]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;* Sharpflash will be only provided as a source code snapshot (from github) since it is for more advanced users only which should be able to make/build the utility and adapt it&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Hardware&lt;br /&gt;
** A parallel DB-25 female port&lt;br /&gt;
** Reciva board (and the radio itself, we need to plug the board into the Radio&#039;s main board too to be able to run Sharpflash, after soldering the bare wires of the wiggler)&lt;br /&gt;
** Cable (depending on your JTAG unit, LPT cable, DB-25 M/F 25 pin)&lt;br /&gt;
** Solder iron&lt;br /&gt;
* Software&lt;br /&gt;
** Linux with root account OR Win 32bit w/ Cygwin and giveio.sys&amp;lt;sup&amp;gt;[[#foot_giveio|giveio]]&amp;lt;/sup&amp;gt; installed (we could think of supporting also Inpout32.dll&amp;lt;sup&amp;gt;[[#foot_inpout32dll|inpout32]]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
** Newest version of Sharpflash&lt;br /&gt;
&lt;br /&gt;
Sharpflash v 0.4 was successfully tested under Windows (Cygwin with ioperm and giveio) and under Ubuntu Linux (both running in a 32 bit environment).&lt;br /&gt;
To use Sharpflash with a 64bit version of windows we may need Inpoutx64.dll&amp;lt;sup&amp;gt;[[#foot_inpoutx64dll|inpout64]]&amp;lt;/sup&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
This version of sharpflash supports reading and writing of the NAND flash using the wiggler parallel port interface. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This software is far from perfect. It takes a lot of time to restore/backup the whole NAND flash&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sharpflash Options ===&lt;br /&gt;
&lt;br /&gt;
  $ ./sharpflash.exe -h&lt;br /&gt;
  &lt;br /&gt;
  Sharpfin Flash Programmer. http://www.sharpfin.org/sharpfin/&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  sharpflash [-p 1|2|3] [-r|-w filename start length ]&lt;br /&gt;
  sharpflash [-p 1|2|3] [-b]&lt;br /&gt;
  &lt;br /&gt;
    -r -w      Read flash to file, or write file to flash&lt;br /&gt;
    -b         Check flash for bad blocks&lt;br /&gt;
    -p &amp;lt;n&amp;gt;     n = 1, 2 or 3. Use LPT1 (default) LPT2 or LPT3 parallel port&lt;br /&gt;
    filename   Destination / source filename, the file must be in nanddump format&lt;br /&gt;
    start      Hex start address in NAND for read/write, must be a multiple of 0x4000&lt;br /&gt;
    length     Hex length to read/write. if file is too short,&lt;br /&gt;
               NAND will be filled with 0xFF. Must be a multiple of 0x4000&lt;br /&gt;
  &lt;br /&gt;
  If no r,w or b argument is supplied, the program just tries to read the&lt;br /&gt;
  JTAG device ID of the flash and CPU using the configured parallel port,&lt;br /&gt;
  &lt;br /&gt;
  For r,w and b commands, the output data contains:&lt;br /&gt;
  &lt;br /&gt;
     w - page written OK&lt;br /&gt;
     r - page read OK&lt;br /&gt;
     . - page check OK&lt;br /&gt;
     b - page/block identified as bad&lt;br /&gt;
     B - page/block has just been marked bad&lt;br /&gt;
  &lt;br /&gt;
  v0.4, http://www.sharpfin.org/sharpfin/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reading Flash Images ===&lt;br /&gt;
&lt;br /&gt;
You can make a back-up of your flash via JTAG using the following format commands:&lt;br /&gt;
&lt;br /&gt;
 sharpflash -r kernel-mtd.bin 004000 0fc000&lt;br /&gt;
&lt;br /&gt;
Will extract the contents of the kernel partition into &#039;kernel-mtd1.bin&#039;, which is a &#039;&#039;nanddump&#039;&#039; format file, skipping any bad sectors as it goes.  Have a look at [[Reciva NAND Flash]] for the background on the flash structure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - http://www.sharpfin.org/sharpfin/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Reading NAND Flash:&lt;br /&gt;
  destination   = kernel-mtd1.bin&lt;br /&gt;
  start addr    = 0x4000&lt;br /&gt;
  length        = 0xFC000&lt;br /&gt;
 .&lt;br /&gt;
 Address  Progress                          Remaining&lt;br /&gt;
 -------  --------------------------------  ---------&lt;br /&gt;
 0004000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr    9h 12m&lt;br /&gt;
 0008000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr    9h 11m&lt;br /&gt;
 000C000  rrrrrr&lt;br /&gt;
&lt;br /&gt;
=== Getting Bad Block Information ===&lt;br /&gt;
&lt;br /&gt;
This is not needed for programming, however it is recommended that you keep a record of the bad blocks marked by the manufacturer as bad, because this information is stored in re-programmable memory, and it may be useful to be able to distinguish between manufacturer-defined bad blocks, and user-defined bad blocks.&lt;br /&gt;
&lt;br /&gt;
 sharpflash -b&lt;br /&gt;
&lt;br /&gt;
The program will output several lines, with each &#039;.&#039; representing a 16K block which is marked as good, and a &#039;b&#039; for each block which is marked bad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - http://www.sharpfin.org/sharpfin/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Checking NAND Blocks&lt;br /&gt;
  0000000: ................................................................&lt;br /&gt;
  0100000: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............&lt;br /&gt;
&lt;br /&gt;
=== Writing Flash Images ===&lt;br /&gt;
&lt;br /&gt;
This process takes a long time to run - roughly 80 seconds per 16KBytes, so a full 16Mb flash will take about 24 hours.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When you are choosing your images to write, make sure that they are in &#039;nanddump&#039; format.  Writing images to flash that are &#039;&#039;not&#039;&#039; in &#039;nanddump&#039; format will result in valid blocks being marked bad&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sharpflash -w boot-mtd.bin 000000 04000&lt;br /&gt;
&lt;br /&gt;
Will write the boot sector from the file boot-mtd.bin, and will produce an output similar to this:&lt;br /&gt;
&lt;br /&gt;
 Sharpfin Flash Programmer - http://www.sharpfin.org/sharpfin/&lt;br /&gt;
 .&lt;br /&gt;
 Found S3C2410 processor on JTAG Cable&lt;br /&gt;
 Found K9F2808UOC on processor&lt;br /&gt;
 Writing NAND Flash:&lt;br /&gt;
  source      = boot-mtd.bin&lt;br /&gt;
  start addr  = 0x0&lt;br /&gt;
  length      = 0x04000&lt;br /&gt;
 .&lt;br /&gt;
 Address  Progress                          Remaining&lt;br /&gt;
 -------  --------------------------------  ---------&lt;br /&gt;
 0000000  wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww    0h 00m&lt;br /&gt;
&lt;br /&gt;
If you want to restore your whole radio nandumps, you may need all of the following commands:&lt;br /&gt;
  sudo ./sharpfin -w boot-mtd.bin   000000 004000&lt;br /&gt;
  sudo ./sharpfin -w kernel-mtd.bin 004000 0FC000&lt;br /&gt;
  sudo ./sharpfin -w root-mtd.bin   100000 D00000&lt;br /&gt;
  sudo ./sharpfin -w config-mtd.bin E00000 100000&lt;br /&gt;
  sudo ./sharpfin -w debug-mtd.bin  F00000 100000&lt;br /&gt;
&lt;br /&gt;
As above, the first number is the starting address and the second the nandump size (in hex).&lt;br /&gt;
Please double-check if these sizes/addresses are correct for your radio too (e.g. via a working sharpfin webserver backup page or just try to get the numbers from the file-size and calculate the &amp;quot;next&amp;quot; address respectively).&lt;br /&gt;
The formula of course is:&lt;br /&gt;
new address = old address + old size&lt;br /&gt;
(the order should always be boot, kernel, root, config, debug; but please double-check that too for your radio)&lt;br /&gt;
&lt;br /&gt;
= Interesting Information / Links =&lt;br /&gt;
&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Arm Programming Info]&lt;br /&gt;
* [http://openocd.berlios.de/ OpenOCD Support for NAND flash via the S3C2410&#039;s built in controller]&lt;br /&gt;
* [https://lists.berlios.de/pipermail/openocd-development/2007-March/000115.html patch supporting the K9F1208 Flash (similar to the K9F2808)]&lt;br /&gt;
* [http://openwince.sourceforge.net/jtag/ OpenWinCE JTAG tools]&lt;br /&gt;
* [http://jtager.cvs.sourceforge.net/jtager/jtager/doc/s3c2410.bsdl?view=log s3c2410.bsdl Support for OpenWinCE]&lt;br /&gt;
* [http://jtager.sourceforge.net jtager]&lt;br /&gt;
* [http://wiki.openmoko.org/wiki/Sjf2410-linux sjf2410 Used by the OpenMoko project]&lt;br /&gt;
* [http://www.mizi.com/developer/s3c2410x/ jflash-s3c2410]&lt;br /&gt;
* [http://www.freelabs.com/~whitis/electronics/jtag/ JTAG Information]&lt;br /&gt;
* [http://www.ens-lyon.fr/LIP/Pub/Rapports/RR/RR2006/RR2006-08.pdf Arm/Linux Booting method]&lt;br /&gt;
* [http://www.bioinspired.com/users/ajg112/electronics/parallelPort.shtml PC Parallel Port Access From Linux]&lt;br /&gt;
* [http://www.ixo.de/info/usb_jtag/ JTAG USB Programming Info]&lt;br /&gt;
* [http://www.ftdichip.com/Documents/ProgramGuides/FTCJTAGPG13.pdf FTDI Library, used by Altera ByteBlaster]&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_inpoutx64dll&amp;quot;&amp;gt;[http://logix4u.net/parallel-port/26-inpoutx64dll-for-win-xp-64-bit Windows IO port access on 64bit environment: inpoutx64.dll]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_inpout32dll&amp;quot;&amp;gt;[http://logix4u.net/component/content/article/14-parallel-port/16-inpout32dll-for-windows-982000ntxp Windows IO port access on 32bit environment: inpout32.dll]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;foot_giveio&amp;quot;&amp;gt;[http://www.cs.ucr.edu/~eblock/pages/pictools/giveio.html Giveio.sys and Library Loader for Windows direct IO port access]&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Toolchain&amp;diff=189</id>
		<title>Toolchain</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Toolchain&amp;diff=189"/>
		<updated>2025-06-08T12:27:23Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Cheat ==  If you want to cheat, and want to do your development under Cygwin, you can download a pre-compiled cross-compiler toolchain for the Cygwin environment on the Releases page.  == Download Crosstool ==  Crosstool is a collection of scripts which can help you building a cross compiler toolchain without pain. Get the latest version from [http://kegel.com/crosstool/]  == Build the toolchain ==  Reciva uses two different toolchains to build the radio software....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cheat ==&lt;br /&gt;
&lt;br /&gt;
If you want to cheat, and want to do your development under Cygwin, you can download a pre-compiled cross-compiler toolchain for the Cygwin environment on the [[Releases]] page.&lt;br /&gt;
&lt;br /&gt;
== Download Crosstool ==&lt;br /&gt;
&lt;br /&gt;
Crosstool is a collection of scripts which can help you building a cross compiler toolchain without pain. Get the latest version from [http://kegel.com/crosstool/]&lt;br /&gt;
&lt;br /&gt;
== Build the toolchain ==&lt;br /&gt;
&lt;br /&gt;
Reciva uses two different toolchains to build the radio software. gcc 3.3.4 is used for the kernel, and 4.1.0 is used for the userspace applications.&lt;br /&gt;
&lt;br /&gt;
The following creates the 4.1.0 toolchain in /opt.&lt;br /&gt;
&lt;br /&gt;
*First check that you have &#039;&#039;flex&#039;&#039; and &#039;&#039;bison&#039;&#039; as they are required but the toolchain builder doesn&#039;t check for them.&lt;br /&gt;
*unpack crosstool into /opt and rename it. (You will probably need to be root to do this):&lt;br /&gt;
&lt;br /&gt;
  cd /opt &lt;br /&gt;
  tar -zxvf crosstool-&amp;lt;version&amp;gt;.tgz&lt;br /&gt;
  mv crosstool-&amp;lt;version&amp;gt; crosstool&lt;br /&gt;
&lt;br /&gt;
*The crosstool builder won&#039;t run if you are root but normal users can&#039;t write to /opt so set the permissions on the crosstool directory.&lt;br /&gt;
&lt;br /&gt;
  chown -R &amp;lt;normal-user&amp;gt; crosstool&lt;br /&gt;
&lt;br /&gt;
*Log in as a normal user and go to /opt&lt;br /&gt;
*choose the right flavour and build&lt;br /&gt;
&lt;br /&gt;
  export RESULT_TOP=/opt/crosstool&lt;br /&gt;
  eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest&lt;br /&gt;
&lt;br /&gt;
This might take some time. If all goes well, you&#039;ll end up with a fresh cross compiler in /opt/crosstool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally check if the development package of libc is installed (otherwise [[Crosscompiling]] will most probably fail afterwards):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libc6-dev&lt;br /&gt;
&lt;br /&gt;
== Configure Your Shell ==&lt;br /&gt;
&lt;br /&gt;
The sharpfin build scripts look for &#039;arm-9tdmi-linux-gnu-gcc&#039; and other cross-compiling programs in the path.  If you add the following lines to your .bashrc file, any cross-tools programs you build will automatically be added to your path:&lt;br /&gt;
&lt;br /&gt;
 export RESULT_TOP=/opt/crosstool&lt;br /&gt;
 COMPILERS=`find $RESULT_TOP -type d -name bin|tr &#039;\n&#039; &#039;:&#039;`&lt;br /&gt;
 export PATH=$PATH:$COMPILERS&lt;br /&gt;
 alias cc=arm-9tdmi-linux-gnu-gcc&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=The_Universal_Remote&amp;diff=188</id>
		<title>The Universal Remote</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=The_Universal_Remote&amp;diff=188"/>
		<updated>2025-06-08T12:26:57Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;dummy&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dummy&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Tevion&amp;diff=187</id>
		<title>Tevion</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Tevion&amp;diff=187"/>
		<updated>2025-06-08T12:26:25Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Inside the Tevion 5404 ==  === Introduction ===  The Tevion 5404 appears to be three separate functions combined into a single equipment.  These functions are:  * Internet Radio (Using the Reciva Barracuda Module) * FM Radio * Alarm  You use the power button to toggle between the Internet Radio (IR) and the FM Radio functions.  Holding in the power button switches the unit off.  You hold down the select button to access the Trebble / Bass / Alarm / Clock / press Reset...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inside the Tevion 5404 ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The Tevion 5404 appears to be three separate functions combined into a single equipment.  These functions are:&lt;br /&gt;
&lt;br /&gt;
* Internet Radio (Using the Reciva Barracuda Module)&lt;br /&gt;
* FM Radio&lt;br /&gt;
* Alarm&lt;br /&gt;
&lt;br /&gt;
You use the power button to toggle between the Internet Radio (IR) and the FM Radio functions.  Holding in the power button switches the unit off.&lt;br /&gt;
&lt;br /&gt;
You hold down the select button to access the Trebble / Bass / Alarm / Clock / press Reset Menu.&lt;br /&gt;
&lt;br /&gt;
=== Tevion Differences ===&lt;br /&gt;
&lt;br /&gt;
This seamless integration of functions leads to a few differences between this and other Reciva based radios:&lt;br /&gt;
&lt;br /&gt;
* Because the alarm is outside of the Internet Radio module, you cannot choose which station to start on, you can just choose buzzer, Internet Radio or FM Radio.  The radio goes to the last known station.  It is unclear what happens if no internet connection is available and IR is selected.&lt;br /&gt;
* Because the clock is outside of the Internet Radio module, there does not appear to be any time synchronisation with the internet.&lt;br /&gt;
* It appears that the display access is quite different to other radios.  It is likely that this model uses I2C to access the display, and this bus is shared between the three functions.  This means that the libreciva lcd library is not compatible with the radio (yet!).  This can be seen when upgrading the firmware (even the Reciva official upgrades), when the display does not indicate progress.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Source_Files&amp;diff=186</id>
		<title>Source Files</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Source_Files&amp;diff=186"/>
		<updated>2025-06-08T12:25:53Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Source Files ==  This page contains the source files, which are used to generate the images and pictures on the Sharpfin Project.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Files ==&lt;br /&gt;
&lt;br /&gt;
This page contains the source files, which are used to generate the images and pictures on the Sharpfin Project.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Software&amp;diff=185</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Software&amp;diff=185"/>
		<updated>2025-06-08T12:25:02Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page only discusses the non-proprietary software running on the Barracuda module. We do *not* discuss or reverse engineer the &#039;Reciva Radio Application&#039;.&lt;br /&gt;
&lt;br /&gt;
= Using JTAG To Install an SSH Shell =&lt;br /&gt;
&lt;br /&gt;
The project purpose is to provide an alternative open source solution to the Reciva proprietary software.  In order to do this, access to the radio is needed.  The following description details how this is achieved using JTAG to dump and restore a modified root image.&lt;br /&gt;
&lt;br /&gt;
[[Software SSH Shell Activation]]&lt;br /&gt;
&lt;br /&gt;
= GPL Firmware =&lt;br /&gt;
&lt;br /&gt;
The reciva radio uses a distribution of Linux for the kernel / core, which is available from [http://www.reciva.com/gpl The Reciva Server].  Interestingly, there are several different releases that contain identically marked (and sized) tarfiles !&lt;br /&gt;
&lt;br /&gt;
Several versions are available, and are summarised in the following table:&lt;br /&gt;
&lt;br /&gt;
= Bootloader =&lt;br /&gt;
&lt;br /&gt;
The good bootloader, found on the Riscstation is the [http://www.simtec.co.uk/products/SWABLE/ ABLE Bootloader], it is possible that this is the loader which is used on the radio module.  This is the bootloader shipped with &#039;bast&#039; platform Samsung 2410 Evaluation Board.  The ABLE bootloader is proprietary software from Simtec Electronics.  An open source project would have to replace this software with another bootloader such as Das U-Boot.&lt;br /&gt;
&lt;br /&gt;
= Bootloader Information Resources =&lt;br /&gt;
&lt;br /&gt;
* [http://www.aleph1.co.uk/book/print/310 ARM Bootloaders]&lt;br /&gt;
&lt;br /&gt;
= Operating system and device drivers =&lt;br /&gt;
The Barracuda module runs [http://familiar.handhelds.org/ Familiar Linux].  Familiar Linux is a derivative of Debian Linux.  Debian Linux has been [http://www.debian.org/ports/arm/ ported to several ARM platforms, including bast ].  The reference platform for bast is the [http://www.simtec.co.uk/products/EB2410ITX/spec.html Simtec Electronics EB2410ITX Evaluation Board].&lt;br /&gt;
&lt;br /&gt;
Linux 2.4.26 is running on the ARM CPU within the Samsung device. Sourcecode for drivers for the following devices is acknowledge to be available :&lt;br /&gt;
&lt;br /&gt;
* USB Host device&lt;br /&gt;
* PCM audio output&lt;br /&gt;
* UART&lt;br /&gt;
* &#039;BAST&#039; real time clock&lt;br /&gt;
* I2C interface (what&#039;s on the bus?)&lt;br /&gt;
* IRDA driver for &#039;NSC PC87108/PC87338&#039; (is this onboard?)&lt;br /&gt;
* LCD (tm13264cbcg / mg1203d / ...)&lt;br /&gt;
&lt;br /&gt;
There is no network interface available onboard, a USB network adapter is used.&lt;br /&gt;
&lt;br /&gt;
It seems that Reciva used the [http://www.debian.org/releases/stable/arm/ch02s01.html.en &#039;bast&#039; ARM architecture] as a base for their own development. &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Bast is a modern ARM 920 board with a 266MHz Samsung processor. It has integrated IDE, USB, Serial, Parallel,   &lt;br /&gt;
 audio, video, flash and two ethernet ports. This system has a good bootloader which is also found on the CATS &lt;br /&gt;
 and RiscStation systems.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(bast, cats, and riscstation are evaluation boards by Simtec Electronics)&lt;br /&gt;
&lt;br /&gt;
Additional information about Linux on the &#039;bast&#039; platform can be found [http://armlinux.simtec.co.uk/index.html here].&lt;br /&gt;
&lt;br /&gt;
= System libraries + utilities =&lt;br /&gt;
&lt;br /&gt;
The following libraries and applications will be needed at least for implementing radio software:&lt;br /&gt;
&lt;br /&gt;
* C-library (glibc/uclibc?)&lt;br /&gt;
* Flash write/erase tools: mtd-utils&lt;br /&gt;
* Shell + basic unix tools (busybox!)&lt;br /&gt;
* codec libraries (libmad, libogg, libvorbis, libflac, etc)&lt;br /&gt;
* Support for WLAN and security: wireless tools and wpa_supplicant&lt;br /&gt;
* networking libraries for HTTP, RTP, RTSP, MMS, etc&lt;br /&gt;
* Webserver (boa?)&lt;br /&gt;
* Preferably a scripting language for rapid development and CGI scripts. Lua, perl, ruby ?&lt;br /&gt;
&lt;br /&gt;
= &#039;Radio&#039; application =&lt;br /&gt;
&lt;br /&gt;
On top of all this, the &#039;radio application&#039; will be running. This application might consist of various&lt;br /&gt;
processes, daemons, CGI-scripts, etc.&lt;br /&gt;
&lt;br /&gt;
The main functions will be&lt;br /&gt;
&lt;br /&gt;
* Handling of the user interface: LCD, buttons and led&#039;s&lt;br /&gt;
* Configuration of the device using a web server&lt;br /&gt;
* Network streaming + audio decoding. VLC for a quick start ?&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
The software source refers to the various GPIO signals: [[GPIOSignals]]&lt;br /&gt;
&lt;br /&gt;
== I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C ==&lt;br /&gt;
&lt;br /&gt;
GPIO provides sets of pins where the board can act as both an I2C master and a slave.  Reciva say that [http://corporate.reciva.com/download_files/L1_06_SlaveModeOperation.pdf the module can be controlled over I2C] in slave mode, instead of a directly connected display and keyboard.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Software&amp;diff=184</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Software&amp;diff=184"/>
		<updated>2025-06-08T12:24:38Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;This page only discusses the non-proprietary software running on the Barracuda module. We do *not* discuss or reverse engineer the &amp;#039;Reciva Radio Application&amp;#039;.  If you think you can help build this public information resource, please [http://sharpfin.zevv.nl/index.php?title=Special:Userlogin&amp;amp;returnto=Main_Page create an account]and get involved.  = Using JTAG To Install an SSH Shell =  The project purpose is to provide an alternative open source solution to the Reciva pro...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page only discusses the non-proprietary software running on the Barracuda module. We do *not* discuss or reverse engineer the &#039;Reciva Radio Application&#039;.&lt;br /&gt;
&lt;br /&gt;
If you think you can help build this public information resource, please [http://sharpfin.zevv.nl/index.php?title=Special:Userlogin&amp;amp;returnto=Main_Page create an account]and get involved.&lt;br /&gt;
&lt;br /&gt;
= Using JTAG To Install an SSH Shell =&lt;br /&gt;
&lt;br /&gt;
The project purpose is to provide an alternative open source solution to the Reciva proprietary software.  In order to do this, access to the radio is needed.  The following description details how this is achieved using JTAG to dump and restore a modified root image.&lt;br /&gt;
&lt;br /&gt;
[[Software SSH Shell Activation]]&lt;br /&gt;
&lt;br /&gt;
= GPL Firmware =&lt;br /&gt;
&lt;br /&gt;
The reciva radio uses a distribution of Linux for the kernel / core, which is available from [http://www.reciva.com/gpl The Reciva Server].  Interestingly, there are several different releases that contain identically marked (and sized) tarfiles !&lt;br /&gt;
&lt;br /&gt;
Several versions are available, and are summarised in the following table:&lt;br /&gt;
&lt;br /&gt;
= Bootloader =&lt;br /&gt;
&lt;br /&gt;
The good bootloader, found on the Riscstation is the [http://www.simtec.co.uk/products/SWABLE/ ABLE Bootloader], it is possible that this is the loader which is used on the radio module.  This is the bootloader shipped with &#039;bast&#039; platform Samsung 2410 Evaluation Board.  The ABLE bootloader is proprietary software from Simtec Electronics.  An open source project would have to replace this software with another bootloader such as Das U-Boot.&lt;br /&gt;
&lt;br /&gt;
= Bootloader Information Resources =&lt;br /&gt;
&lt;br /&gt;
* [http://www.aleph1.co.uk/book/print/310 ARM Bootloaders]&lt;br /&gt;
&lt;br /&gt;
= Operating system and device drivers =&lt;br /&gt;
The Barracuda module runs [http://familiar.handhelds.org/ Familiar Linux].  Familiar Linux is a derivative of Debian Linux.  Debian Linux has been [http://www.debian.org/ports/arm/ ported to several ARM platforms, including bast ].  The reference platform for bast is the [http://www.simtec.co.uk/products/EB2410ITX/spec.html Simtec Electronics EB2410ITX Evaluation Board].&lt;br /&gt;
&lt;br /&gt;
Linux 2.4.26 is running on the ARM CPU within the Samsung device. Sourcecode for drivers for the following devices is acknowledge to be available :&lt;br /&gt;
&lt;br /&gt;
* USB Host device&lt;br /&gt;
* PCM audio output&lt;br /&gt;
* UART&lt;br /&gt;
* &#039;BAST&#039; real time clock&lt;br /&gt;
* I2C interface (what&#039;s on the bus?)&lt;br /&gt;
* IRDA driver for &#039;NSC PC87108/PC87338&#039; (is this onboard?)&lt;br /&gt;
* LCD (tm13264cbcg / mg1203d / ...)&lt;br /&gt;
&lt;br /&gt;
There is no network interface available onboard, a USB network adapter is used.&lt;br /&gt;
&lt;br /&gt;
It seems that Reciva used the [http://www.debian.org/releases/stable/arm/ch02s01.html.en &#039;bast&#039; ARM architecture] as a base for their own development. &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Bast is a modern ARM 920 board with a 266MHz Samsung processor. It has integrated IDE, USB, Serial, Parallel,   &lt;br /&gt;
 audio, video, flash and two ethernet ports. This system has a good bootloader which is also found on the CATS &lt;br /&gt;
 and RiscStation systems.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(bast, cats, and riscstation are evaluation boards by Simtec Electronics)&lt;br /&gt;
&lt;br /&gt;
Additional information about Linux on the &#039;bast&#039; platform can be found [http://armlinux.simtec.co.uk/index.html here].&lt;br /&gt;
&lt;br /&gt;
= System libraries + utilities =&lt;br /&gt;
&lt;br /&gt;
The following libraries and applications will be needed at least for implementing radio software:&lt;br /&gt;
&lt;br /&gt;
* C-library (glibc/uclibc?)&lt;br /&gt;
* Flash write/erase tools: mtd-utils&lt;br /&gt;
* Shell + basic unix tools (busybox!)&lt;br /&gt;
* codec libraries (libmad, libogg, libvorbis, libflac, etc)&lt;br /&gt;
* Support for WLAN and security: wireless tools and wpa_supplicant&lt;br /&gt;
* networking libraries for HTTP, RTP, RTSP, MMS, etc&lt;br /&gt;
* Webserver (boa?)&lt;br /&gt;
* Preferably a scripting language for rapid development and CGI scripts. Lua, perl, ruby ?&lt;br /&gt;
&lt;br /&gt;
= &#039;Radio&#039; application =&lt;br /&gt;
&lt;br /&gt;
On top of all this, the &#039;radio application&#039; will be running. This application might consist of various&lt;br /&gt;
processes, daemons, CGI-scripts, etc.&lt;br /&gt;
&lt;br /&gt;
The main functions will be&lt;br /&gt;
&lt;br /&gt;
* Handling of the user interface: LCD, buttons and led&#039;s&lt;br /&gt;
* Configuration of the device using a web server&lt;br /&gt;
* Network streaming + audio decoding. VLC for a quick start ?&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
The software source refers to the various GPIO signals: [[GPIOSignals]]&lt;br /&gt;
&lt;br /&gt;
== I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C ==&lt;br /&gt;
&lt;br /&gt;
GPIO provides sets of pins where the board can act as both an I2C master and a slave.  Reciva say that [http://corporate.reciva.com/download_files/L1_06_SlaveModeOperation.pdf the module can be controlled over I2C] in slave mode, instead of a directly connected display and keyboard.&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Software_SSH_Shell_Activation&amp;diff=183</id>
		<title>Software SSH Shell Activation</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Software_SSH_Shell_Activation&amp;diff=183"/>
		<updated>2025-06-08T12:23:55Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;== Enabling Login ==  &amp;#039;&amp;#039;&amp;#039;REMINDER: The purpose of the project is to provide alternative firmware / patches to the reciva offering.  The Sharpfin Project does not condone, and will not be party to any reverse engineering activities of any reciva application, the project deals with GPL code only.&amp;#039;&amp;#039;&amp;#039;  The NAND Flash in the reciva radio is partitioned into 5 areas:  &amp;lt;pre&amp;gt; dev:    size   erasesize  name mtd0: 00004000 00004000 &amp;quot;NAND BootAgent&amp;quot; mtd1: 000fc000 00004000 &amp;quot;Linux K...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enabling Login ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REMINDER: The purpose of the project is to provide alternative firmware / patches to the reciva offering.  The Sharpfin Project does not condone, and will not be party to any reverse engineering activities of any reciva application, the project deals with GPL code only.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NAND Flash in the reciva radio is partitioned into 5 areas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dev:    size   erasesize  name&lt;br /&gt;
mtd0: 00004000 00004000 &amp;quot;NAND BootAgent&amp;quot;&lt;br /&gt;
mtd1: 000fc000 00004000 &amp;quot;Linux Kernel&amp;quot;&lt;br /&gt;
mtd2: 00d00000 00004000 &amp;quot;Root&amp;quot;&lt;br /&gt;
mtd3: 00100000 00004000 &amp;quot;Config&amp;quot;&lt;br /&gt;
mtd4: 00100000 00004000 &amp;quot;Debug&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do is obtain the Root NAND partition, unpack it and add some files, repack it and upload it back into the radio.&lt;br /&gt;
&lt;br /&gt;
* Use your favorite JTAG programmer to extract the Root partition to a file: 2ro&lt;br /&gt;
* Install jffs2 software&lt;br /&gt;
* Use unpack.jffs2 script to unpack the file&lt;br /&gt;
* untar the following over the unpacked tree&lt;br /&gt;
* Use mkfs.jffs2 to pack the file back up again&lt;br /&gt;
* Use your favorite JTAG programmer to reinstall the image&lt;br /&gt;
&lt;br /&gt;
You will then be able to login as &#039;admin&#039; password &#039;admin&#039; onto your radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install jffs2 software ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login (password: anoncvs)&lt;br /&gt;
# cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd&lt;br /&gt;
You may also need to install the gbootroot rpm to provide the blkmtd driver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== extract the root filesystem ===&lt;br /&gt;
&lt;br /&gt;
Use the following script to unpack the root filesystem from the file 2ro in the current directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
modprobe loop&lt;br /&gt;
modprobe mtdblock&lt;br /&gt;
&lt;br /&gt;
losetup /dev/loop0 2ro&lt;br /&gt;
insmod blkmtd erasesz=256 device=/dev/loop0&lt;br /&gt;
mkdir /mnt/mtd2&lt;br /&gt;
mount -t jffs2 /dev/mtdblock0 /mnt/mtd2&lt;br /&gt;
&lt;br /&gt;
/bin/rm -rf mtd2&lt;br /&gt;
mkdir mtd2&lt;br /&gt;
(cd /mnt/mtd2 ; tar cf - . ) | (cd mtd2 ; tar xvf - )&lt;br /&gt;
&lt;br /&gt;
umount /mnt/mtd2&lt;br /&gt;
rmmod blkmtd&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
rmmod loop&lt;br /&gt;
rmmod mtdblock&lt;br /&gt;
rmmod mtdcore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unpack the dropbear tools into the tree ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt; to be added &amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use mkfs.jffs2 to pack the file back up again ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt; to be added &amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* NAND Flash: http://www.linux-mtd.infradead.org/faq/nand.html&lt;br /&gt;
* JFFS2 Filesystem: http://www.linux-mtd.infradead.org/faq/jffs2.html&lt;br /&gt;
* JFFS2 Unpack Guide: http://www.yargybot.com/Familiar/BackupHowto.html&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Single_Phase_And_Three_Phase&amp;diff=181</id>
		<title>Single Phase And Three Phase</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Single_Phase_And_Three_Phase&amp;diff=181"/>
		<updated>2025-06-08T12:22:59Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;dummy&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dummy&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=Sharpflash_Bugs&amp;diff=180</id>
		<title>Sharpflash Bugs</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=Sharpflash_Bugs&amp;diff=180"/>
		<updated>2025-06-08T12:21:55Z</updated>

		<summary type="html">&lt;p&gt;Philipp: Created page with &amp;quot;= Bugs =  Please leave details of bugs and bug-fixes on this page, or chat about them on the discussion tab ...  == Partition Overrun ==  Version: 0.1  Suspected Bug: If there are bad blocks, writing will overrun, and possibly corrupt next partition.  Temporary fix: run sharpflash -b and reduce length in sharpflash -w command by 0x4000 * number of known bad blocks in partition.  Permanent Fix: Truncate (lose) any blocks which overrun the specified length in the -w comman...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bugs =&lt;br /&gt;
&lt;br /&gt;
Please leave details of bugs and bug-fixes on this page, or chat about them on the discussion tab ...&lt;br /&gt;
&lt;br /&gt;
== Partition Overrun ==&lt;br /&gt;
&lt;br /&gt;
Version: 0.1&lt;br /&gt;
&lt;br /&gt;
Suspected Bug: If there are bad blocks, writing will overrun, and possibly corrupt next partition.&lt;br /&gt;
&lt;br /&gt;
Temporary fix: run sharpflash -b and reduce length in sharpflash -w command by 0x4000 * number of known bad blocks in partition.&lt;br /&gt;
&lt;br /&gt;
Permanent Fix: Truncate (lose) any blocks which overrun the specified length in the -w command.&lt;br /&gt;
&lt;br /&gt;
Issues: There may be issues with this - I don&#039;t understand how the device driver uses the flash - i.e. could it have an unused gap, then use the last block on the partition?&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
Version: 0.1 &lt;br /&gt;
&lt;br /&gt;
The program is very slow - it can be speeded up several ways: &lt;br /&gt;
&lt;br /&gt;
using a different scan chain to write to the processor memory - this would mean that the processor flash controller would write the ECC and 16 bytes instead of us doing it.  The number of jtag clock ticks would probably also be less.&lt;br /&gt;
&lt;br /&gt;
downloading a programmer program to the RAM, and also the code to be programmed.  the programmer program can then write and check, thus reducing the involvement of jtag.  OpenOCD has a lot of the code needed to do this.&lt;br /&gt;
&lt;br /&gt;
== Corruption ==&lt;br /&gt;
&lt;br /&gt;
Suspect that writes are dropping the odd byte here and there, so the resulting data is not what is wanted.&lt;br /&gt;
&lt;br /&gt;
== More ... ==&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
	<entry>
		<id>https://www.sharpfin.org/index.php?title=SharpfinPatchfileStore&amp;diff=179</id>
		<title>SharpfinPatchfileStore</title>
		<link rel="alternate" type="text/html" href="https://www.sharpfin.org/index.php?title=SharpfinPatchfileStore&amp;diff=179"/>
		<updated>2025-06-08T12:21:07Z</updated>

		<summary type="html">&lt;p&gt;Philipp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following files on the Sharpfin server are downloadable through the patchserver-launcher.exe programme.&lt;br /&gt;
&lt;br /&gt;
* Sharpfin-uninstall 0.1.patch: https://www.sharpfin.org/images/7/71/Sharpfin-uninstall_0.1.patch&lt;br /&gt;
* Sharpfin-test.patch: https://www.sharpfin.org/images/9/9a/Sharpfin-test.patch&lt;br /&gt;
* Sharpfin-base 0.3.patch: https://www.sharpfin.org/images/c/c2/Sharpfin-base_0.3.patch&lt;br /&gt;
* Sharpfin-www 0.6.install: https://www.sharpfin.org/images/2/24/Sharpfin-www_0.6.install&lt;br /&gt;
&lt;br /&gt;
These files are also available, but are untested alphas&lt;br /&gt;
&lt;br /&gt;
* Sharpfin-base_0.4-alpha20080510.patch: https://www.sharpfin.org/images/2/26/Sharpfin-base_0.4-alpha20080510.patch&lt;/div&gt;</summary>
		<author><name>Philipp</name></author>
	</entry>
</feed>