summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-07-23 21:11:59 +0100
committerAidan MacDonald <amachronic@protonmail.com>2021-07-24 14:07:09 +0000
commitfde6eaa8e105eb2a177d826867f8e2fc3e066463 (patch)
treeb69fea0cb1ffd1b2a4cb0d16dd7594a5fda81f30
parent42ba117952fcb4e486aa7a0e27add800a8649e31 (diff)
downloadrockbox-fde6eaa8e105eb2a177d826867f8e2fc3e066463.tar.gz
rockbox-fde6eaa8e105eb2a177d826867f8e2fc3e066463.zip
Add Fiio M3K and Shanling Q1 manuals
Includes installation instructions and a description of Rockbox's limitations versus the original firmware. Some things are still missing, notably screenshots for the Q1. The M3K image also needs to be updated to include the 'select' button. Change-Id: Ib533206df01925203edeccdd75e1bf22f407e794
-rwxr-xr-xmanual/advanced_topics/main.tex2
-rw-r--r--manual/getting_started/installation.tex62
-rw-r--r--manual/getting_started/jztool_install.tex156
-rw-r--r--manual/platform/fiiom3k.tex28
-rw-r--r--manual/platform/keymap-fiiom3k.tex100
-rw-r--r--manual/platform/keymap-shanlingq1.tex95
-rw-r--r--manual/platform/shanlingq1.tex29
-rw-r--r--manual/rockbox_interface/main.tex17
8 files changed, 482 insertions, 7 deletions
diff --git a/manual/advanced_topics/main.tex b/manual/advanced_topics/main.tex
index f1d1de69a1..940852d593 100755
--- a/manual/advanced_topics/main.tex
+++ b/manual/advanced_topics/main.tex
@@ -667,6 +667,8 @@ You just ``play'' a file with the extension %
667\opt{sansa,iriverh10,iriverh10_5gb,mrobe100,vibe500,samsungyh}{\fname{.mi4}.} % 667\opt{sansa,iriverh10,iriverh10_5gb,mrobe100,vibe500,samsungyh}{\fname{.mi4}.} %
668\opt{sansaAMS,fuzeplus}{\fname{.sansa}.} % 668\opt{sansaAMS,fuzeplus}{\fname{.sansa}.} %
669\opt{gigabeatf,gigabeats}{\fname{.gigabeat}.} % 669\opt{gigabeatf,gigabeats}{\fname{.gigabeat}.} %
670\opt{fiiom3k}{\fname{.m3k}} %
671\opt{shanlingq1}{\fname{.q1}} %
670This can be used to test new firmware versions without deleting your 672This can be used to test new firmware versions without deleting your
671current version. 673current version.
672 674
diff --git a/manual/getting_started/installation.tex b/manual/getting_started/installation.tex
index 241c41d3f2..cc0c7af919 100644
--- a/manual/getting_started/installation.tex
+++ b/manual/getting_started/installation.tex
@@ -111,7 +111,36 @@ follow the instructions at
111\end{description} 111\end{description}
112} 112}
113 113
114\nopt{gigabeats}{ 114\opt{fiiom3k,shanlingq1}{
115Although Rockbox is considered fully functional on the \playername{}, there are
116a few limitations compared to the original firmware which you should be aware
117of before installing.
118\begin{description}
119 \item[Filesystem support.] Rockbox only supports the FAT32 filesystem. Other
120 filesystems such as exFAT or NTFS are not supported.
121 \item[USB DAC.] This feature is not supported by Rockbox, but you can
122 dual-boot the original firmware if you want to use it.
123 \opt{shanlingq1}{\item[Wireless.] There is no support for Bluetooth or WiFi.
124 You can dual-boot the original firmware to use wireless functionality.}
125 \item[Hotswapping SD cards.] Rockbox runs from the SD card, not the internal
126 flash memory. Hotswapping is technically possible, but you need to install
127 the same version of Rockbox to each SD card.
128
129 Some features might not work correctly after hotswapping and you may
130 experience crashes or instability. Removing the SD card while data is being
131 written is liable to cause crashes and data loss, and possibly corrupt your
132 filesystem.
133 \opt{shanlingq1}{\item[Touchscreen.] There is only basic touchscreen support.
134 Further work is required to make the UI more usable with a touchscreen in
135 general.
136 \note{The touchscreen can be used in two modes, either a 3$\times$3 grid mode
137 which divides the screen into areas to emulate a set of physical
138 buttons (the default setting), or ``absolute point'' mode where the
139 touchscreen is used to point to items on the screen.\\}}
140\end{description}
141}
142
143\nopt{gigabeats,fiiom3k,shanlingq1}{
115\begin{description} 144\begin{description}
116 145
117\nopt{ipod1g2g}{ 146\nopt{ipod1g2g}{
@@ -237,7 +266,8 @@ people. Rockbox Utility is a graphical application that does almost everything
237for you. However, should you encounter a problem, then the manual way is 266for you. However, should you encounter a problem, then the manual way is
238still available to you.\\ 267still available to you.\\
239 268
240\opt{gigabeats}{\note{The automated install is not yet available for the 269\opt{gigabeats,fiiom3k,shanlingq1}{
270 \note{The automated install is not yet available for the
241 \playerlongtype{}. For now you can use the manual method to install Rockbox. 271 \playerlongtype{}. For now you can use the manual method to install Rockbox.
242 Please still read the section on the automatic install as it explains 272 Please still read the section on the automatic install as it explains
243 various important aspects of Rockbox, such as the different versions 273 various important aspects of Rockbox, such as the different versions
@@ -312,9 +342,9 @@ housekeeping tool \caps{Rockbox Utility}. It allows you to:
312Prebuilt binaries for Windows, Linux and Mac OS X are 342Prebuilt binaries for Windows, Linux and Mac OS X are
313available at the \wikilink{RockboxUtility} wiki page.\\ 343available at the \wikilink{RockboxUtility} wiki page.\\
314 344
315\opt{gigabeats,ondavx777}{\note{Rockbox Utility does not currently support the 345\opt{gigabeats,ondavx777,fiiom3k,shanlingq1}{
316\playertype{} and you will therefore need to follow the manual install 346\note{Rockbox Utility does not currently support the \playertype{} and you will
317instructions below.\\}} 347therefore need to follow the manual install instructions below.\\}}
318 348
319When first starting \caps{Rockbox Utility} run ``Autodetect'', 349When first starting \caps{Rockbox Utility} run ``Autodetect'',
320found in the configuration dialog (File $\rightarrow$ Configure). Autodetection 350found in the configuration dialog (File $\rightarrow$ Configure). Autodetection
@@ -514,6 +544,7 @@ by Rockbox, in the main directory of your \daps{} drive.
514 \opt{IMX233}{\input{getting_started/IMX233_install.tex}} 544 \opt{IMX233}{\input{getting_started/IMX233_install.tex}}
515 \opt{samsungyh}{\input{getting_started/samsungyh_install.tex}} 545 \opt{samsungyh}{\input{getting_started/samsungyh_install.tex}}
516 \opt{xduoox3}{\input{getting_started/xduoox3_install.tex}} 546 \opt{xduoox3}{\input{getting_started/xduoox3_install.tex}}
547 \opt{fiiom3k,shanlingq1}{\input{getting_started/jztool_install.tex}}
517 } 548 }
518} 549}
519 550
@@ -609,6 +640,9 @@ by Rockbox, in the main directory of your \daps{} drive.
609} 640}
610\opt{e200}{Your e200 will automatically reboot and Rockbox should load.} 641\opt{e200}{Your e200 will automatically reboot and Rockbox should load.}
611 642
643\opt{fiiom3k,shanlingq1}{
644 Safely eject / unmount your \dap{}.
645}
612 646
613 647
614\subsection{Enabling Speech Support (optional)}\label{sec:enabling_speech_support} 648\subsection{Enabling Speech Support (optional)}\label{sec:enabling_speech_support}
@@ -772,11 +806,25 @@ completely follow the manual uninstallation instructions below.}}
772 \playerman{} firmware. 806 \playerman{} firmware.
773} 807}
774 808
809\opt{fiiom3k,shanlingq1}{
810 If you want to remove the Rockbox bootloader, copy an original firmware
811 update to your microSD card and run the \playerman{} update by holding
812 \ActionBootOFRecovery{} while powering on the \dap{}.
813
814 Alternatively, if you took a backup of the original \playerman{} bootloader
815 you can copy the backup file, \bootbackupfilename{}, to your SD card and
816 select \emph{Restore bootloader} from the recovery menu. The recovery menu
817 can be accessed by holding \ActionBootRecoveryMenu{} when powering on. If
818 your \dap won't boot, use \fname{jztool} to load the bootloader over USB
819 and enter the recovery menu -- see \reference{ref:jztool_load_bootloader}.
820}
821
775\nopt{gigabeats}{ 822\nopt{gigabeats}{
776 If you wish to clean up your disk, you may also wish to delete the 823 If you wish to clean up your disk, you may also wish to delete the
777 \fname{.rockbox} directory and its contents. 824 \fname{.rockbox} directory and its contents.
778 \nopt{iaudiom3,iaudiom5,iaudiox5}{Turn the \playerman{} off. 825 \nopt{iaudiom3,iaudiom5,iaudiox5,fiiom3k,shanlingq1}{
779 Turn the \dap{} back on and the original \playerman{} software will load.} 826 Turn the \playerman{} off. Turn the \dap{} back on and the original
827 \playerman{} software will load.}
780} 828}
781 829
782\opt{gigabeats}{ 830\opt{gigabeats}{
diff --git a/manual/getting_started/jztool_install.tex b/manual/getting_started/jztool_install.tex
new file mode 100644
index 0000000000..c492b6987e
--- /dev/null
+++ b/manual/getting_started/jztool_install.tex
@@ -0,0 +1,156 @@
1You need a computer running Windows, Linux, or Mac to install the bootloader.
2The installation utility \fname{jztool} is a command line tool used to load the
3Rockbox bootloader on your \dap{}. Please note that it \emph{only} loads the
4Rockbox bootloader and does not modify your \dap{} in any way. Flashing the
5bootloader happens entirely on the \dap{}, without the intervention of your PC.
6
7It's possible to install Rockbox alongside any original firmware version.
8\opt{fiiom3k}{This includes the ``unofficial'' XVortex firmware.}
9It's also possible to update the original firmware after installing the Rockbox
10bootloader, but this will erase the Rockbox bootloader and you will have to
11install it again if you want to keep using Rockbox.
12
13\begin{itemize}\label{ref:jztool_load_bootloader}
14\item Download the Rockbox bootloader, \bootfilename{}, from
15 \opt{fiiom3k}{\download{bootloader/fiio/m3k/}.}
16 \opt{shanlingq1}{\download{bootloader/shanling/q1/}.}
17\item Download \fname{jztool} from \download{bootloader/fiio/m3k/}.
18\item Connect your player in USB boot mode:
19 \begin{enumerate}
20 \item Make sure your player is fully powered off.
21 \item Connect a USB cable to your player -- but don't plug it in to your
22 computer yet!
23 \item While holding the \ActionIngenicUSBBoot{} button, plug the other end
24 of the USB cable into your computer.
25 \item If your player has entered USB boot mode%
26 \opt{fiiom3k}{the button light will light up and the LCD will remain
27 black. The \playerman{} splash screen will not be displayed.}
28 \opt{shanlingq1}{the LCD will remain black and the \playerman{} splash
29 screen will not be displayed.}
30 \end{enumerate}
31\item Windows users need to follow \reference{ref:install_usb_driver} now
32 to make the \playertype{} accessible to \fname{jztool} before continuing.
33\item Open a command prompt or terminal in the folder where you downloaded
34 \fname{jztool}. Copy \bootfilename{} to that folder so you can easily refer
35 to it on the command line.
36
37 On Windows, run this command to load the bootloader onto your \dap{}.
38 \begin{code}
39 jztool.exe \jztoolsubcommand{} load \bootfilename{}
40 \end{code}
41 Linux or Mac users should run this command. Linux users need to run
42 \fname{jztool} as root to allow it access the USB device.
43 \begin{code}
44 ./jztool \jztoolsubcommand{} load \bootfilename{}
45 \end{code}
46\item If your \dap{} is showing the Rockbox recovery menu, then the Rockbox
47 bootloader has been loaded correctly.
48 % TODO: Screenshot of the recovery menu
49\end{itemize}
50
51To finish the install, you need to flash the Rockbox bootloader to your \dap{}
52using the recovery menu.
53
54\begin{itemize}
55\item Copy \bootfilename{} to the root of a FAT32-formatted SD card, and insert
56 it into your \dap{}.
57\item Select \emph{Backup bootloader} to back up the original firmware's
58 bootloader. This will create a file \bootbackupfilename{} on the root of your
59 SD card. You should back up this file somewhere safe before continuing with
60 the installation. In the unlikely event anything goes wrong, you can copy
61 \bootbackupfilename{} onto your SD card and choose \emph{Restore bootloader}
62 to restore the original \playerman{} bootloader.
63\item Select \emph{Install/update bootloader} from the menu. The installation
64 takes less than a second and once it has finished successfully, you can
65 unplug and power off your \dap{}.
66\end{itemize}
67
68Rarely, a new bootloader might be released to fix bugs or add certain features.
69Updating the bootloader follows the same process as the initial installation.
70Taking a backup is not necessary if you are only updating an existing Rockbox
71bootloader.
72
73Normally the installation will complete without incident, but you may encounter
74one of the following errors. Some are benign and easily corrected while others
75are more serious. You should seek help on one of the Rockbox support channels
76if you get a serious error.
77
78\begin{description}
79\item[File not found.]
80 If you selected \emph{Install/update bootloader}, the missing file is
81 \bootfilename{}; if you selected \emph{Restore bootloader}, the missing file
82 is \bootbackupfilename{}. Copy the missing file to your SD card, and make
83 sure your card is formatted to FAT32, then try again.
84\item[Bad archive.]
85 The file \bootfilename{} appears to be corrupted or doesn't contain the
86 expected contents. Try deleting it from your SD card and copying it again.
87 If the error persists, you might have a corrupted download; try downloading
88 the bootloader again.
89\item[NAND open/read/write error.]
90 This indicates a problem accessing your \daps{} internal flash memory.
91 Write errors are the most serious -- your existing bootloader may be
92 corrupted, leaving your \dap{} unbootable. Seek assistance if you encounter
93 any of these errors \emph{before} retrying the installation.
94\item[Disk I/O error.]
95 There was a problem reading or writing data on the SD card. This message can
96 also be displayed by \emph{Restore bootloader} if the backup file
97 \bootbackupfilename{} does not have the correct size.
98\item[Out of memory or Unknown error.]
99 These are serious errors indicating some low-level system problem.
100 They should never be encountered in normal circumstances.
101\end{description}
102
103\subsubsection{Install the USB driver}\label{ref:install_usb_driver}
104\note{This section is only applicable if you are running \fname{jztool} from
105a Windows computer. Linux and Mac users can safely ignore this section.}
106
107To use \fname{jztool} on a Windows computer, you need to install a USB driver
108so it can access the \dap{} in USB boot mode. \fname{jztool} uses a library
109called \fname{libusb} to access your \dap{}, and on Windows \fname{libusb} can
110use a number of different back-end drivers to access USB devices.
111
112Zadig (\url{https://zadig.akeo.ie/}) is a third-party tool which allows you to
113install various back-end drivers for use with \fname{libusb}-based programs.
114The recommended driver is WinUSB, which is provided by Microsoft and comes
115bundled with recent versions of Windows.
116
117\note{The Rockbox project is not associated with Zadig or its development.
118 In the unlikely event you encounter a Zadig-specific issue that cannot be
119 resolved on Rockbox support channels you may need to seek help elsewhere.}
120
121You will need administrator access to run Zadig. When you are ready, follow the
122steps below to install the driver.
123
124\begin{itemize}
125\item Download Zadig from \url{https://zadig.akeo.ie/}.
126\item Make sure your \dap{} is connected in USB boot mode
127 (see \reference{ref:jztool_load_bootloader}).
128\item Run Zadig and select the USB device corresponding to your player.
129 The USB ID of the \playername{} is \texttt{A108 1000} when it is connected in
130 USB boot mode.
131 % TODO: Screenshot of Zadig window
132 \warn{Be careful not to select the wrong USB device in Zadig! Zadig allows
133 you to override the USB driver of any USB device, and accidentally
134 overwriting the driver for an important device like your mouse or keyboard
135 can cause major problems. Always double check the device before clicking
136 install.}
137\item Select the WinUSB driver from the list and click \emph{Install}.
138\item Wait for the installation to finish, then close Zadig.
139\end{itemize}
140
141If the installation was successful you can return to
142\reference{ref:jztool_load_bootloader} and run \fname{jztool}. If you get
143``Cannot open USB device'' errors from \fname{jztool} or any
144\fname{libusb}-related errors, you can try some of the steps below to fix the
145problem.
146
147\begin{itemize}
148\item Unplug your \dap{} and force a power-off by holding the power button
149 for 10 seconds. Then reconnect it and try running \fname{jztool} again.
150\item Restart your computer and try again.
151\item Try installing a different USB driver, for example ``libusbK''.
152 Some users have reported difficulties with the WinUSB driver and have
153 had success by trying an alternate driver.
154\end{itemize}
155
156If problems persist you should ask for help on the Rockbox support channels.
diff --git a/manual/platform/fiiom3k.tex b/manual/platform/fiiom3k.tex
new file mode 100644
index 0000000000..0f44683214
--- /dev/null
+++ b/manual/platform/fiiom3k.tex
@@ -0,0 +1,28 @@
1% $Id$ %
2\def\UseOption{fiiom3k}
3\edef\UseOption{\UseOption,FIIO_M3K_PAD}
4\edef\UseOption{\UseOption,HAVE_BACKLIGHT}
5\edef\UseOption{\UseOption,HAVE_RB_BL_IN_FLASH}
6\edef\UseOption{\UseOption,fiiom3k}
7
8\newcommand{\playerman}{FiiO}
9\newcommand{\playertype}{M3K}
10\newcommand{\playerlongtype}{\playertype}
11\newcommand{\dapdisplaywidth}{240}
12\newcommand{\dapdisplayheight}{320}
13\newcommand{\dapdisplaydepth}{16}
14\newcommand{\specimg}{fiiom3k}
15%Used to name the player, e.g. ...to the \dap
16\newcommand{\dap}{player}
17%For use when referring to the player. E.g. the \daps\ capacity ...
18\newcommand{\daps}{player's}
19\newcommand{\firmwarefilename}{\fname{rockbox.m3k}}
20\newcommand{\bootfilename}{\fname{bootloader.m3k}}
21\newcommand{\firmwareextension}{\fname{m3k}}
22\newcommand{\bootbackupfilename}{\fname{fiiom3k-boot.bin}}
23\newcommand{\jztoolsubcommand}{fiiom3k}
24\newcommand{\screenshotsize}{8cm}
25\newcommand{\disk}{SD card}
26
27% link external keymap file
28\input{platform/keymap-fiiom3k.tex}
diff --git a/manual/platform/keymap-fiiom3k.tex b/manual/platform/keymap-fiiom3k.tex
new file mode 100644
index 0000000000..ecf07bebd4
--- /dev/null
+++ b/manual/platform/keymap-fiiom3k.tex
@@ -0,0 +1,100 @@
1% $Id$
2
3\newcommand{\ButtonPower}{\btnfnt{Power}}
4\newcommand{\ButtonPlay}{\btnfnt{Play}}
5\newcommand{\ButtonVolUp}{\btnfnt{Volume Up}}
6\newcommand{\ButtonVolDown}{\btnfnt{Volume Down}}
7\newcommand{\ButtonUp}{\btnfnt{Up}}
8\newcommand{\ButtonDown}{\btnfnt{Down}}
9\newcommand{\ButtonLeft}{\btnfnt{Prev}}
10\newcommand{\ButtonRight}{\btnfnt{Next}}
11\newcommand{\ButtonSelect}{\btnfnt{Select}}
12\newcommand{\ButtonBack}{\btnfnt{Back}}
13\newcommand{\ButtonMenu}{\btnfnt{Menu}}
14\newcommand{\ButtonScrollFwd}{\btnfnt{Scroll Down}}
15\newcommand{\ButtonScrollBack}{\btnfnt{Scroll Up}}
16
17%Button actions, standard context
18\newcommand{\ActionStdPrev}{\ButtonUp{} or \ButtonScrollBack}
19\newcommand{\ActionStdPrevRepeat}{\ButtonUp{} or \ButtonScrollBack}
20\newcommand{\ActionStdNext}{\ButtonDown{} or \ButtonScrollFwd}
21\newcommand{\ActionStdNextRepeat}{\ButtonDown{} or \ButtonScrollFwd}
22\newcommand{\ActionStdOk}{\ButtonSelect}
23\newcommand{\ActionStdCancel}{\ButtonBack}
24\newcommand{\ActionStdContext}{\ButtonMenu{} or Long \ButtonSelect}
25\newcommand{\ActionStdMenu}{Long \ButtonBack}
26\newcommand{\ActionStdQuickScreen}{Long \ButtonMenu}
27\newcommand{\ActionQuickScreenExit}{\ButtonBack{}, \ButtonPower{}, or \ButtonSelect}
28\newcommand{\ActionStdUsbCharge}{\ButtonPlay}
29
30%Button actions, wps context
31\newcommand{\ActionWpsStop}{Long \ButtonPower}
32\newcommand{\ActionWpsBrowse}{Long \ButtonBack}
33\newcommand{\ActionWpsVolUp}{\ButtonVolUp}
34\newcommand{\ActionWpsVolDown}{\ButtonVolDown}
35\newcommand{\ActionWpsSkipPrev}{\ButtonLeft}
36\newcommand{\ActionWpsSkipNext}{\ButtonRight}
37\newcommand{\ActionWpsSeekBack}{Long \ButtonLeft}
38\newcommand{\ActionWpsSeekFwd}{Long \ButtonRight}
39\newcommand{\ActionWpsPlay}{\ButtonPlay{} or \ButtonSelect}
40\newcommand{\ActionWpsContext}{\ButtonMenu}
41\newcommand{\ActionWpsMenu}{\ButtonBack}
42\newcommand{\ActionWpsQuickScreen}{Long \ButtonMenu}
43\newcommand{\ActionWpsHotkey}{Long \ButtonPlay}
44\newcommand{\ActionWpsAbSetAPrevDir}{Long \ButtonUp}
45\newcommand{\ActionWpsAbSetBNextDir}{Long \ButtonDown}
46\newcommand{\ActionWpsAbReset}{Long \ButtonSelect}
47
48%Button actions, tree context
49\newcommand{\ActionTreeWps}{Long \ButtonBack}
50\newcommand{\ActionTreeStop}{Long \ButtonPlay}
51\newcommand{\ActionTreeParentDirectory}{\ButtonBack}
52\newcommand{\ActionTreeEnter}{\ButtonSelect}
53\newcommand{\ActionTreeHotkey}{\ButtonPlay}
54
55%Button actions, YesNo context
56\newcommand{\ActionYesNoAccept}{\ButtonPlay{} or \ButtonSelect}
57
58%Button actions, Virtual Keyboard Context
59\newcommand{\ActionKbdSelect}{\ButtonSelect}
60\newcommand{\ActionKbdUp}{\ButtonUp}
61\newcommand{\ActionKbdDown}{\ButtonDown}
62\newcommand{\ActionKbdLeft}{\ButtonLeft}
63\newcommand{\ActionKbdRight}{\ButtonRight}
64\newcommand{\ActionKbdPageFlip}{\ButtonMenu}
65\newcommand{\ActionKbdDone}{\ButtonPlay}
66\newcommand{\ActionKbdAbort}{\ButtonPower}
67
68%Button actions, Pitch Screen context
69\newcommand{\ActionPsToggleMode}{\ButtonSelect}
70\newcommand{\ActionPsIncSmall}{\ButtonUp{} or \ButtonScrollBack}
71\newcommand{\ActionPsDecSmall}{\ButtonDown{} or \ButtonScrollFwd}
72\newcommand{\ActionPsIncBig}{\ButtonVolUp}
73\newcommand{\ActionPsDecBig}{\ButtonVolDown}
74\newcommand{\ActionPsNudgeLeft}{\ButtonLeft}
75\newcommand{\ActionPsNudgeRight}{\ButtonRight}
76\newcommand{\ActionPsReset}{Long \ButtonSelect}
77\newcommand{\ActionPsExit}{\ButtonPower}
78\newcommand{\ActionPsFaster}{\ButtonBack}
79\newcommand{\ActionPsSlower}{\ButtonMenu}
80
81%Button actions, Bookmark screen context
82\newcommand{\ActionBmDelete}{\ButtonPlay}
83
84%Plugin lib actions
85\newcommand{\PluginUp}{\ButtonUp}
86\newcommand{\PluginDown}{\ButtonDown}
87\newcommand{\PluginLeft}{\ButtonLeft}
88\newcommand{\PluginRight}{\ButtonRight}
89\newcommand{\PluginSelect}{\ButtonSelect}
90\newcommand{\PluginSelectRepeat}{Long \ButtonSelect}
91\newcommand{\PluginCancel}{\ButtonBack}
92\newcommand{\PluginExit}{\ButtonPower}
93\newcommand{\PluginScrollFwd}{\ButtonScrollFwd}
94\newcommand{\PluginScrollBack}{\ButtonScrollBack}
95
96%Bootloader keys
97\newcommand{\ActionIngenicUSBBoot}{\ButtonVolDown}
98\newcommand{\ActionBootRecoveryMenu}{\ButtonVolUp}
99\newcommand{\ActionBootOFPlayer}{\ButtonPlay}
100\newcommand{\ActionBootOFRecovery}{\ButtonPlay{} and \ButtonVolUp}
diff --git a/manual/platform/keymap-shanlingq1.tex b/manual/platform/keymap-shanlingq1.tex
new file mode 100644
index 0000000000..9476ca8a70
--- /dev/null
+++ b/manual/platform/keymap-shanlingq1.tex
@@ -0,0 +1,95 @@
1% $Id$
2
3\newcommand{\ButtonPower}{\btnfnt{Power}}
4\newcommand{\ButtonPlay}{\btnfnt{Play}}
5\newcommand{\ButtonVolUp}{\btnfnt{Volume Up}}
6\newcommand{\ButtonVolDown}{\btnfnt{Volume Down}}
7\newcommand{\ButtonPrev}{\btnfnt{Previous}}
8\newcommand{\ButtonNext}{\btnfnt{Next}}
9
10%Button actions, standard context
11\newcommand{\ActionStdPrev}{\ButtonPrev{} or \TouchActionStdPrev}
12\newcommand{\ActionStdPrevRepeat}{Long \ButtonPrev{} or \TouchActionStdPrevRepeat}
13\newcommand{\ActionStdNext}{\ButtonNext{} or \TouchActionStdNext}
14\newcommand{\ActionStdNextRepeat}{Long \ButtonNext{} or \TouchActionStdNextRepeat}
15\newcommand{\ActionStdCancel}{\ButtonPower{} or \TouchActionStdCancel}
16\newcommand{\ActionStdContext}{\TouchActionStdContext}
17\newcommand{\ActionStdQuickScreen}{\TouchActionStdQuickScreen}
18\newcommand{\ActionQuickScreenExit}{\TouchActionQuickScreenExit}
19\newcommand{\ActionStdMenu}{\TouchActionStdMenu}
20\newcommand{\ActionStdOk}{\ButtonPlay{} or \TouchActionStdOk}
21\newcommand{\ActionStdUsbCharge}{\ButtonPlay}
22
23%Button actions, wps context
24\newcommand{\ActionWpsPlay}{\ButtonPlay{} or \TouchActionWpsPlay}
25\newcommand{\ActionWpsSkipNext}{\ButtonNext{} or \TouchActionWpsSkipNext}
26\newcommand{\ActionWpsSeekFwd}{Long \ButtonNext{} \TouchActionWpsSeekFwd}
27\newcommand{\ActionWpsSkipPrev}{\ButtonPrev{} or \TouchActionWpsSkipPrev}
28\newcommand{\ActionWpsSeekBack}{Long \ButtonPrev{} or \TouchActionWpsSeekBack}
29\newcommand{\ActionWpsStop}{Long \ButtonPlay{} or \TouchActionWpsStop}
30\newcommand{\ActionWpsVolDown}{\ButtonVolDown{} or \TouchActionWpsVolDown}
31\newcommand{\ActionWpsVolUp}{\ButtonVolUp{} or \TouchActionWpsVolUp}
32\newcommand{\ActionWpsQuickScreen}{\TouchActionWpsQuickScreen}
33\newcommand{\ActionWpsMenu}{\TouchActionWpsMenu}
34\newcommand{\ActionWpsContext}{\TouchActionWpsContext}
35\newcommand{\ActionWpsBrowse}{\TouchActionWpsBrowse}
36\newcommand{\ActionWpsPitchScreen}{\TouchActionWpsPitchScreen}
37\newcommand{\ActionWpsIdThreeScreen}{\TouchActionWpsIdThreeScreen}
38\newcommand{\ActionWpsAbSetBNextDir}{\TouchActionWpsAbSetBNextDir}
39\newcommand{\ActionWpsAbSetAPrevDir}{\TouchActionWpsAbSetAPrevDir}
40\newcommand{\ActionWpsAbReset}{\TouchActionWpsAbReset}
41\newcommand{\ActionWpsHotkey}{\TouchBottomRight}
42
43%Button actions, tree context
44\newcommand{\ActionTreeWps}{\TouchActionTreeWps}
45\newcommand{\ActionTreeStop}{\TouchActionTreeStop}
46\newcommand{\ActionTreeEnter}{\TouchActionTreeEnter}
47\newcommand{\ActionTreeParentDirectory}{\TouchActionTreeParentDirectory}
48
49%Button actions, YesNo context
50\newcommand{\ActionYesNoAccept}{\TouchActionYesNoAccept}
51
52%Button actions, Virtual Keyboard Context
53\newcommand{\ActionKbdLeft}{\TouchActionKbdLeft}
54\newcommand{\ActionKbdRight}{\TouchActionKbdRight}
55\newcommand{\ActionKbdSelect}{\TouchActionKbdSelect}
56\newcommand{\ActionKbdDone}{\TouchActionKbdDone}
57\newcommand{\ActionKbdAbort}{\TouchActionKbdAbort}
58\newcommand{\ActionKbdUp}{\TouchActionKbdUp}
59\newcommand{\ActionKbdDown}{\TouchActionKbdDown}
60\newcommand{\ActionKbdCursorLeft}{\TouchActionKbdCursorLeft}
61\newcommand{\ActionKbdCursorRight}{\TouchActionKbdCursorRight}
62\newcommand{\ActionKbdBackSpace}{\TouchActionKbdBackSpace}
63\newcommand{\ActionKbdPageFlip}{\TouchActionKbdPageFlip}
64
65%Button actions, Pitch Screen context
66\newcommand{\ActionPsToggleMode}{\TouchActionPsToggleMode}
67\newcommand{\ActionPsIncSmall}{\TouchActionPsIncSmall}
68\newcommand{\ActionPsIncBig}{\TouchActionPsIncBig}
69\newcommand{\ActionPsDecSmall}{\TouchActionPsDecSmall}
70\newcommand{\ActionPsDecBig}{\TouchActionPsDecBig}
71\newcommand{\ActionPsNudgeLeft}{\TouchActionPsNudgeLeft}
72\newcommand{\ActionPsNudgeRight}{\TouchActionPsNudgeRight}
73\newcommand{\ActionPsReset}{\TouchActionPsReset}
74\newcommand{\ActionPsExit}{\TouchActionPsExit}
75\newcommand{\ActionPsSlower}{\TouchActionPsSlower}
76\newcommand{\ActionPsFaster}{\TouchActionPsFaster}
77
78%Button actions, Bookmark screen context
79\newcommand{\ActionBmDelete}{\TouchActionBmDelete}
80
81%Plugin lib actions
82\newcommand{\PluginUp}{\TouchTopMiddle}
83\newcommand{\PluginDown}{\TouchBottomMiddle}
84\newcommand{\PluginLeft}{\TouchMidLeft}
85\newcommand{\PluginRight}{\TouchMidRight}
86\newcommand{\PluginCancel}{\ButtonPower or \TouchBottomRight}
87\newcommand{\PluginExit}{\ButtonPower}
88\newcommand{\PluginSelect}{\TouchCenter}
89\newcommand{\PluginSelectRepeat}{Long \TouchCenter}
90
91%Bootloader keys
92\newcommand{\ActionIngenicUSBBoot}{\ButtonPlay}
93\newcommand{\ActionBootRecoveryMenu}{\ButtonNext}
94\newcommand{\ActionBootOFPlayer}{\ButtonPrev}
95\newcommand{\ActionBootOFRecovery}{\ButtonPrev{} and \ButtonNext}
diff --git a/manual/platform/shanlingq1.tex b/manual/platform/shanlingq1.tex
new file mode 100644
index 0000000000..a2dc6855dc
--- /dev/null
+++ b/manual/platform/shanlingq1.tex
@@ -0,0 +1,29 @@
1% $Id$ %
2\def\UseOption{shanlingq1}
3\edef\UseOption{\UseOption,SHANLING_Q1_PAD}
4\edef\UseOption{\UseOption,HAVE_BACKLIGHT}
5\edef\UseOption{\UseOption,HAVE_RB_BL_IN_FLASH}
6\edef\UseOption{\UseOption,shanlingq1}
7
8\newcommand{\playerman}{Shanling}
9\newcommand{\playertype}{Q1}
10\newcommand{\playerlongtype}{\playertype}
11\newcommand{\dapdisplaywidth}{360}
12\newcommand{\dapdisplayheight}{400}
13\newcommand{\dapdisplaydepth}{16}
14\newcommand{\specimg}{shanlingq1}
15%Used to name the player, e.g. ...to the \dap
16\newcommand{\dap}{player}
17%For use when referring to the player. E.g. the \daps\ capacity ...
18\newcommand{\daps}{player's}
19\newcommand{\firmwarefilename}{\fname{rockbox.q1}}
20\newcommand{\bootfilename}{\fname{bootloader.q1}}
21\newcommand{\firmwareextension}{\fname{q1}}
22\newcommand{\bootbackupfilename}{\fname{shanlingq1-boot.bin}}
23\newcommand{\jztoolsubcommand}{shanlingq1}
24\newcommand{\screenshotsize}{8cm}
25\newcommand{\disk}{SD card}
26
27% link external keymap file
28\input{platform/keymap-shanlingq1.tex}
29\input{platform/keymap-touchscreen.tex}
diff --git a/manual/rockbox_interface/main.tex b/manual/rockbox_interface/main.tex
index 8e42e3ef4c..92d50ccd0a 100644
--- a/manual/rockbox_interface/main.tex
+++ b/manual/rockbox_interface/main.tex
@@ -715,6 +715,23 @@ To turn on and off your Rockbox enabled \dap{} use the following keys:
715 and then press the \ButtonPower{} button. 715 and then press the \ButtonPower{} button.
716 } 716 }
717 717
718 \opt{fiiom3k,shanlingq1}
719 {
720 Rockbox has a dual-boot feature. To boot into the original firmware,
721 hold \ActionBootOFPlayer{} when powering on the \dap{}.
722
723 You can trigger a normal \playerman{} firmware update by holding
724 \ActionBootOFRecovery{} when powering on the \dap{}.
725 \warn{Updating the original firmware will \textbf{erase} the Rockbox
726 bootloader.}
727
728 \subsection{Entering the recovery menu}
729 You can access the Rockbox bootloader's ``recovery menu'' by holding
730 \ActionBootRecoveryMenu{}. This menu can be used to connect your \dap{}
731 over USB to transfer files, update the Rockbox bootloader, or revert to a
732 bootloader you've previously backed up.
733 }
734
718 } 735 }
719\subsection{Putting music on your \dap{}} 736\subsection{Putting music on your \dap{}}
720 737