Qeedji TAB10s User manual

Developer manual 001H
AOSP-9.10.10
TAB10s
8:30

2
Legal noces
AOSP-9.10.10 (001H_en)
© 2020 Qeedji
Rights and Responsibilies
All rights reserved. No part of this manual may be reproduced in any form or by any means whatsoever without the wrien permission of the publisher. The products and services
menoned in this document may be trademarks and/or trademarks of their respecve owners. The publisher and the author do not pretend to these brands.
Although every precauon has been taken in the preparaon of this document, the publisher and the author assumes no responsibility for errors or omissions, or for damages
resulng from the use of the informaon contained in this document or the use of programs and source code who can accompany it. Under no circumstances can the publisher and
the author be held responsible for any loss of profits or any other commercial prejudice caused or that would have been caused directly or indirectly by this document.
Product informaon
The concepon and specificaons of the product may change without prior noce, and this applies to hardware, embedded soware and this guide. Consumable items accessories
may slightly differ than herein described as Qeedji is depending on the evoluons of its suppliers. This document contains confidenal informaon; it can’t be disclosed to any third
pares without prior wrien authorizaon of Qeedji.
Safety instrucons
Please read carefully the following instrucons before switching the product on: - WARNING! Correct fing and installaon is of the utmost importance. Incorrect fing and/or
installaon may result in personal injury or loss. Qeedji disclaims all liability, of whatever kind, if the product is assembled, fied and/or installed in an incorrect manner. - Do not use
the product near a water supply. - Do not pour anything on the product, like flammable liquids or material. - Do not expose the product to direct sun, near a heang source or a dust
nor vibraons. - Do not obstruct holes, to be sure that air flows freely around the product. - Switch off the product during a storm. - Do not open the product in any circumstances.
Guarantee terms
Qeedji products are eligible for a warranty to cover genuine manufacturing defect for 3 years. Product failure occurring as the result of factors that do not constute genuine
manufacturing defect are not covered under the terms of the warranty and any repairs of this nature would be chargeable. For example: Inappropriate maintenance acon, a non-
authorized modificaon, a not specified environment ulizaon (see ‘Safety instrucons’), or if the product has been damaged aer an impact, a fall, a bad manipulaon or a storm
consequence, an insufficient protecon against heat, moisture or frost. This warranty is not transferrable. In addion, any repairs carried out by non-authorized personnel will
invalidate the warranty.
WEEE Direcve
This symbol means that your end of life equipment must not be disposed of with household waste but must be deposited at a collecon point for waste electrical and electronic
equipment or to your reseller. This will benefit the environment. In this context, a system for collecng and recycling has been implemented by the European Union

4
1.1 Introducon
This documentaon is intended for ISVs ( Independent Software Vendors ), wishing to develop AOSP APKs on Qeedji TAB10s and who already have Android APK development
skills.
◬
It is recommended to read first the TAB10s user manual.
Demo Package Content
Items Descripon Quanty
TAB10s Qeedji tablet embedding AOSP 1
Power supply USB Type-C 1
USB Type-C cable Cable - Assembly, Type-C Male to Type-A Male 1
USB hub USB Type-A (2.0), USB Type-C 1

5
1.2 APK Development
Prequisite
The soware developer already knows how to develop Android APK and generate or debug APK with Android Studio.
Standard API
The standard API of AOSP 9.10.10 is based on the AOSP SDK 28.
The AOSP 9.10.10 for Qeedji embeds Chromium Web engine 83.
Specific Java library API
The Qeedji github is hosng the tech-qeedji-system-lib-classes.jar Java library.
The tech-qeedji-system-lib-classes.jar Java library exposes an API for specific features.
public class SurroundLight {
public static final int OFF = 0;
public static final int RED = 1;
public static final int GREEN = 2;
public static final int ORANGE = 3;
public SurroundLight();
public void setColor(int color);
public int getColor();
}
public class Rfid125KHz {
public Rfid125KHz(Context c);
public void setEnabled(boolean value);
}
public class DipSwitch {
public DipSwitch(Context c);
public boolean camera();
public boolean microphone();
}
public class SharedPreferenceAPI {
public String getPreferenceAuthority();
public Object[][] initPreferences();
}
Specific Javascript library API
The Qeedji github is hosng the tech-qeedji-host-webview.aar Android library.
The tech-qeedji-host-webview.aar Android library exposes an Javascript API for specific funconalies in a WebView.
The tech-qeedji-host-webview.aar Android library embeds the tech-qeedji-system-lib-classes.jar library.
String Host.Bluetooth().getHardwareAddress();
String Host.Device().getModel();
String Host.Device().getManufacturer();
String Host.Device().getSerial();
String Host.Device().getPsn();
String Host.Device().getSoftwareVersion();
boolean Host.DipSwitch().getCamera();
boolean Host.DipSwitch().getMicrophone();
int Host.NetworkInterfaces().length();
NetworkInterface Host.NetworkInterfaces().get(int index);
String NetworkInterface.getName();
String NetworkInterface.getHardwareAddress();
boolean NetworkInterface.isUp();
void Host.NFC().start();
void Host.NFC().stop();
callback : void onHostNFCReading(String type, String id);
void Host.PowerManager().goToSleep();
void Host.PowerManager().wakeUp();
void Host.ProximitySensor().start();
void Host.ProximitySensor().stop();
callback : void onHostProximitySensorReading(float distance);
void Host.Rfid125KHz().start();
void Host.Rfid125KHz().stop();
int Host.SurroundLight().OFF();
int Host.SurroundLight().RED();
int Host.SurroundLight().GREEN();
int Host.SurroundLight().ORANGE();
void Host.SurroundLight().setColor(int color);
int Host.SurroundLight().getColor();
void Host.SystemButton().start();
void Host.SystemButton().stop();
callback : void onHostSystemButtonReading(int count);

6
APK shared preferences handling with configuraon script
An APK can be designed to share some preferences which can be then read or wrien by the Qeedji System service:
either through the configuraon script,
or through the device configuraon Web interface¹.
¹ Should be available Q1/2021.
The APK must link the tech-qeedji-system-lib-classes.jar Java library.
The APK must also implement a child class of the SharedPreferenceAPI class supported in the tech-qeedji-system-lib-classes.jar Java library.
package tech.qeedji.test1;
import tech.qeedji.system.lib.SharedPreferenceAPI;
public class MySharedPreferenceAPI extends SharedPreferenceAPI {
@Override
public String getPreferenceAuthority() {
return BuildConfig.APPLICATION_ID;
}
@Override
public Object[][] initPreferences() {
Object[][] preferences = {
// filename, key, access, type, default_value
{"test1", "test1Integer", "rw", int.class, 1},
{"test1", "test1Long", "rw", long.class, 10000000L},
{"test1", "test1Float", "rw", float.class, 0.897546F},
{"test1", "test1Boolean", "rw", boolean.class, true},
{"test1", "test1String", "rw", String.class, "test1StringValue"},
{"test1", "test1StringSet", "rw", String[].class, new String[]{"http://Val0", "http://Val1", "http://Val2"}},
};
return preferences;
}
}
The APK must declare a provider in its manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tech.qeedji.test1">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider android:name="tech.qeedji.test1.MySharedPreferenceAPI"
android:authorities="tech.qeedji.test1"
android:multiprocess="false"
android:exported="true"
android:singleUser="false"
android:initOrder="100"
android:visibleToInstantApps="true"/>
</application>
</manifest>
Extract example from a configuraon script:
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setInt("test1Integer", 8);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setLong("test1Long", 99999999);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setFloat("test1Float", 0.123456);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setBoolean("test1Boolean", false);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setString("test1String", "Newtest1StringValue");
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setStringArray("test1StringSet", ["http://NewVal0", "http://NewVal1", "http://NewVal2"]);

7
Examples
The Qeedji github for TAB10s is hosng APK examples using the AOSP SDK for TAB10s:
proximity_sensor APK: displays a message Hello Qeedji when a person is detected, or displays a message Nobody detected when no one is detected.
This APK uses the SensorManager API with a default sensor of type Sensor.TYPE_PROXIMITY.
rfid_tag_reader APK: detects NFC tags or RFID 125KHz tags and print their values (type and ID).
This APK uses the NfcAdapter API for NFC tags and the KeyEvent.Callback for RFID 125KHz tags.
The NFC permission and the android.hardware.nfc feature API are required.
surround_light APK: allows to set the surround light color and state with steady/green, steady/orange, steady/red, off.
This APK uses the SurroundLight class described in the specific API.
device_info APK: displays device informaons.
This APK uses the android.os.Build APIs, NetworkInterface and the DipSwitch class described in the specific API.
These permissions are required: READ_PHONE_STATE, READ_PRIVILEGED_PHONE_STATE, INTERNET, ACCESS_NETWORK_STATE, BLUETOOTH, BLUETOOTH_ADMIN,
BLUETOOTH_PERM and LOCAL_MAC_ADDRESS_PERM.
This APK has system privileges.
autorestart APK: is launched automacally aer a device reboot. It is relaunched also automacally aer it crashes.
This APK uses the BroadcastReceiver and Thread.UncaughtExceponHandler APIs.
The RECEIVE_BOOT_COMPLETED permission is required.

8
Device Power Standby: allows to go into (or exit from) Android sleep mode (display off, touch screen off).
This APK uses the PowerManager API.
The DEVICE_POWER and WAKE_LOCK permissions are required.
This APK has system privileges.
System Buon: print a noficaon message when a short press on the system buon, lower than two seconds, is detected.
This APK uses the BroadcastReceiver API.
URL Launcher: load an URL.
This APK uses the WebView API and the tech-qeedji-host-webview.aar Android library for Qeedji.
The RECEIVE_BOOT_COMPLETED and INTERNET permissions are required.
This APK has system privileges.
A specific 000000000000.js configuraon script allows to configure the URL launcher APK (set URL, set login credenals, ...).
Several websites examples are available on Qeedji github for TAB10s.
◬
Designing an APK having system privileges may require for ISV to sign its APK with a Java Keystore having a certificate signed by Qeedji . For further informaon,
refer to the chapter § System APK signing.

9
APK debug
AOSP for TAB10s is compable with Android Studio and Android Debug Bridge (ADB)² soware development suite.
²ADB is included in the Android SDK Plaorm-Tools package.
You can debug with ADB using USB or WLAN . In case you have an USB hub with an Ethernet to USB bridge, you can also debug with ADB using LAN .
USB debug
Connect a cable between the TAB10s USB-C connector and the USB 2.0 connector of your computer.
Then wait for the TAB10s is boong up.
Unlike an Android Mobile tablet, the TAB10s has no baery and is completely powered by the USB-C connector. Before supply the TAB10s with the USB connector of your
computer, check with your computer's manufacturer that its USB connectors are protected against over-intensity to warranty that its USB output will be never damaged.
Check also that the USB output is able to deliver a sufficient power else the TAB10s may not stop reboong.
WLAN debug
Connect the cable of the USB-C wall plug to the TAB10s USB-C connector.
Then wait for the TAB10s is boong up.
Go in the Settings applicaon and configure the WLAN.
LAN debug
Prerequisite: have a suitable Ethernet to USB (USB-C or POGO type connector) bridge which is connected to the LAN network.
Connect the Ethernet to USB bridge to on the TAB10s (USB-C or POGO type connector).
Debug mode seng
Launch the Settings applicaon:
press on the About tablet (TAB10s) menu,
press 5 mes on the buon Build number (9.yy.zz release keys) . The message You are now a developer should appear showing that the debug mode is acvated,
go in the Advanced menu. The Developer options menu is now available,
acvate Network debugging or USB debugging according to your needs.
☛It is possible to acvate or inacvate the debug mode on the TAB10s by using the configuraon script. In the configuraon-by-script, uncomment the line
disableAllowDebugging(); .
Network access permissions
To access the network, an APK needs to declare INTERNET and ACCESS_NETWORK_STATE permissions in its manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

10
1.3 System APK signing
☛ When the ISV wants to design, on the TAB10s, some APK not requiring system rights to be executed, in this case no APK signing is required.
To design an APK having system privileges like the surround light driving, reboot control or URL launcher, the ISV needs to sign its APK with a Java Keystore having a
certificate signed by Qeedji .
☛ The ISV may use his Java Keystore for all its system applicaons and the same cerficate for all the ISV TAB10s devices. When APK signing is required, each ISV must
apply this procedure once.
Procedure to create a system Java Keystore
☛ In the example, it is considered that the company name is Contoso. ISD means IT Service Department. In the procedure, it is required to use the generic email of the
Chief Informaon Security Officer (CISO) of the company, for example [email protected] .
◬
In the following procedure, the following example values have been used.
Label type Label value examples
C US
ST California
L San-Francisco
O Contoso
OU Contoso_ISD
CN CISO
Passphrase 1234
Java_keystore name contoso_qeedji_java_keystore
Java_keystore password 567890
Friendly name qeedji_aosp_key
1 . GENERATE YOUR PRIVATE KEY
◬
You are responsible for your private key storing which has to be never communicated to a third party.
Generate your private key with a length of 2048 bits with the RSA 2048 Bits key type.
For example:
openssl genrsa -f4 2048 > contoso_private_key_for_android.key
2 . GENERATE YOUR OWN CSR (CERTIFICATE SIGNING REQUEST)
Generate your own .csr cerficate signing request thanks to your private key and some applicant idenficaon used to digitally sign the request. Thanks to match the
filename paern by replacing contoso by your own organizaon name.
For example:
openssl req -new -key contoso_private_key_for_android.key -subj '/C=US/ST=California/L=San-
Francisco/O=Contoso/OU=Contoso_ISD/CN=CISO/[email protected]' > contoso-for_qeedji_aosp.csr
3 . SEND YOUR CSR TO QEEDJI
Once generated, send a email to the csr@qeedji.tech with your CSR ( contoso-for_qeedji_aosp.csr file for example) in aachment.
4 . WAIT FOR THE QEEDJI ANSWER
Qeedji should then return an answer within 7 days.
◬
Qeedji will send its answer to the email defined into the CSR file ([email protected]om for example), which may be not the same email used to send the CSR to Qeedji.
Qeedji sends 2 files: the signed cerficate (extension .crt) and the CA file (extension .pem).
For example:
contoso-qeedji_aosp-certificate-001A.crt ,
contoso-qeedji_aosp-certificate_authority-001A.pem
5 . GENERATE YOUR PUBLIC CERTIFICATE KEY
You have first to generate your public cerficate key. For example:
openssl pkcs12 -export -in contoso-qeedji_aosp-cerficate-001A.crt -inkey contoso_private_key_for_android.key -out
contoso_cerficate_and_key_for_qeedji_aosp.pk12 -password pass:1234 -name qeedji_aosp_key -chain -CAfile contoso-qeedji_aosp-cerficate_authority-001A.pem
6 . GENERATE THE JAVA KEYSTORE
Generate then a Java Keystore from your public cerficate key with the keytool ¹ toolbox.
The Java Keystore system is now usable in Android Studio .
For example:
keytool -importkeystore -deststorepass 567890 -destkeystore contoso_qeedji_java_keystore.jks -srckeystore contoso_cerficate_and_key_for_qeedji_aosp.pk12 -
srcstoretype PKCS12 -srcstorepass 1234
¹ Keytool is a toolbox to handle cerficates for Java products. It is provided by default in the JDK since version 1.1.

11
Make your system APK
1 . MODIFY THE MANIFEST
You modify the APK manifest by adding this line: android:sharedUserId="android.uid.system"
Sample manifest (AndroidManifest.xml file):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tech.qeedji.reboot"
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.REBOOT" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2 . SIGN THE APPLICATION WITH YOUR SYSTEM JAVA KEYSTORE
When creang the APK, sign the APK with your System Java Keystore .
With the previous example, you would have to use the following parameters values:
Key store password = 567890
Key password = 1234
Cerficate revocaon
◬
In case the security or commercial condions are not fully filled, Qeedji keeps the rights to revocate a ISV cerficate.

12
1.4 Qeedji System service
The TAB10s embeds Qeedji System service. The Qeedji System service is defined as a privileged applicaon of the TAB10s.
This service allows to:
install one or more APK by USB storage device inseron,
update the AOSP firmware by USB storage device inseron,
configure the product with a Javascript file:
by USB storage device inseron,
by DHCP (code 66).
This service allows also to configure the AOSP device mode as soon as the device has started.

13
1.4.1 Installaon by USB
Install properly the USB hub between its appropriate external power supply and the TAB10s USB-C connector and follow the procedure:
wait for the TAB10s is boong up,
copy the required file(s) in the first paron at the root of the USB storage device,
insert the USB storage device into the USB-A port of the USB hub,
follow the messages displayed on the screen.
☛ In case using USB storage device, the files must be present at the root directory of the first FAT paron.
In case several files type are present, the installaon is done in this order:
AOSP firmware (.zip),
applicaon (.apk),
configuraon script (.js).
APK Installaon
Copy the .apk file at the root directory of an USB storage device. Insert the USB storage device on the device (or on the third party equipment connected to the USB-C connector)
and follow the instrucons on the screen.
For further informaon, refer to the TAB10s user manual.
One or more APK can be installed (or upgraded). Each installed applicaon is visible on the AOSP workspace.
☛ The APK installaon by USB is allowed by default in the AOSP firmware xx.yy.zz. This feature can be disabled by a system preference :
externalstorage.copy.apk.enabled . Uncomment the line disableExternalStorageCopyApk(); in the configuraon-script then follow the configuration by USB
procedure.
☛ If the USB storage device contains several APK at the root, each APK is installed in alphabecal order.
AOSP firmware upgrade
Copy the AOSP firmware ( .zip ) on the root directory of the USB storage device.
Insert the USB storage device in the TAB10s and follow the instrucons on the screen.
For further informaon, refer to the TAB10s user manual.
☛ If the USB storage device contains several AOSP firmware for the product, the update does not take place and no message appears.
Device configuraon by script
The device can be configured thanks to a configuraon script.
The following paern is supported:
Suitable for several devices:
configuration.js ,
000000000000.js ,
Suitable for only one device:
<TAB10s_WLAN0_MAC_addr>.js .
Suitable when connecng an third party device supporng an Ethernet to USB brigde:
<TAB10s_ETH0_MAC_addr>.js (in this case, the <TAB10s_ETH0_MAC_addr> value worths the MAC address of the LAN interface of the Ethernet to USB-C bridge).
Copy the configuraon script ( .js ) on the root directory of the USB storage device.
Insert the USB storage device in the TAB10s and follow the instrucons on the screen.
☛ The device configuraon can be updated also thanks to configuraon script hosted on a TFTP server + DHCP server (code 66).
For further informaon, refer to the TAB10s user manual.

14
1.4.2 AOSP device mode
The Qeedji System service allows to configure the AOSP device mode as soon as the device has started. It is handled thanks to the persist.sys.device_mode system property,
used by the SystemUI and Launcher3 AOSP services.
Two values are possible for the persist.sys.device_mode system property:
native (default value): thanks to AOSP menu, the user can, whenever he wants, stops the APK, returns to the AOSP home screen, launches another APK, access to AOSP
funcons like, for example, the Back buon or the Sengs applicaon.
kiosk : all the AOSP user interfaces are unavailable. However the AOSP virtual keyboard remains available.
☛ Note for developers: if the persist.sys.device_mode system property value is invalid or if it does not exist, the default AOSP device mode is native . If the
persist.sys.device_mode system property value is kiosk , the SystemUI service inhibits the system bars and the Launcher3 service hides the AllApps view and the
OponsPopupView dialog box.
The persist.sys.device_mode system property can be changed by using the configuraon script:
native :
setDeviceModeNative(); /* default mode */
//setDeviceModeKiosk();
kiosk :
//setDeviceModeNative(); /* default mode */
setDeviceModeKiosk();
For further informaon, refer to the TAB10s user manual.
¹ To be launched automacally in kiosk mode, the applicaon requires a subscripon to the event ACTION_BOOT_COMPLETED. In this case, it is recommended to have only one APK
with this subscripon. For further informaon, refer to hps://developer.android.com/reference/android/content/Intent#ACTION_BOOT_COMPLETED. In case no APK is subscribed
to the event ACTION_BOOT_COMPLETED, the Qeedji wallpaper ² is displayed.
² A next release will allow to load a custom wallpaper.

15
1.5 Qeedji preferences
AOSP system properes added by Qeedji
Name Type R/W Default value Values Descripon
persist.sys.delivery-software-version String RO 9.10.10_beta6 \<x>.\<y>.\<z>\
<software-
extraversion>
Save the version of the last
AOSP firmware upgrade.
persist.sys.device_mode String RW native native , kiosk Handle the AOSP device
mode.
persist.sys.rfid125khz.enable Boolean RW true true , false Handle the RFID 125KHz.
persist.sys.rfid125khz.keyboard_wedge.key_interval String RW 0 0 to 1000 Define the key interval of
RFID 125KHz keyboard edge.
persist.sys.rfid125khz.keyboard_wedge.key_press_duration String RW 0 0 to 1000
Define the key press duraon
of RFID 125KHz keyboard
edge.
Sengs preferences added by Qeedji
Name Namespace Type R/W Default
value Values Descripon
developer_options_allowed secure Integer RW 0 0 , 1 When the preference value is 1 , the debug mode is
acvated.
adb_tcp_enabled global Integer RW 0 0 , 1 When the preference value is 1 , adb over network is
acvated.
adb_tcp_port global Integer RW 5555 0 to
64738 Allows to define the TCP port for adb.
Shared preferences for Qeedji System service
Name Type R/W Default
value Values Descripon
externalstorage.copy.apk.enabled Boolean RW true true ,
false
When the preference value is true ,
the APK installaon from the root of the USB storage is
authorized.
Shared preferences for the URL Launcher APK
The shared preferences for URL Launcher APK is stored in the tech.qeedji.url_launcher.prefs.xml file. In case login credenals are required to connect to the URL, an addional
shared preferences tech.qeedji.url_launcher.credential.<credential_label>.prefs.xml file is required.
◬
The shared preferences files for URL launcher APK must be created and updated with the specific 000000000000.js configuraon script.
tech.qeedji.url_launcher.prefs.xml Type R/W Default
value Values Descripon
start_after_boot_completed Boolean RW true true , false
When the preference value is true ,
The URL launcher APK is automacally started aer
the AOSP has started.
autorefresh_url_enabled Boolean RW false true , false
When the preference value is true ,
The URL launcher APK relaunches periodically the
URL.
autorefresh_url_interval Long RW 60 1 to 86400 Defines the reload period in seconds for the URL
launcher APK.
url String RW for example:
https://www.yoururl.en/ Defines the URL to launch.
credential String RW
for example:
If <credential_label>
worths HttpAuth ,
the value is HttpAuth
Defines the subpart of the expected filename
for the addional file required
when login credenals are needed
to connect to the URL.
☛ The <credential_label> subpart of the filename is defined in the tech.qeedji.url_launcher.prefs.xml file above.

16
tech.qeedji.url_launcher.credential.<credential_label>.prefs Type R/W Default value Values Descripon
type String RW HttpAuth HttpAuth ¹ Define the credenal type.
username String RW Define the URL credenal username.
password String WO Define the URL credenal password.
¹ In this version, only the HttpAuth value is possible.

17
2.1 Contacts
For further informaon, please contact us by e-mail:
Technical support: [email protected]
Sales department: [email protected]ech
Refer to the Qeedji Website for FAQ, applicaon notes, and soware downloads:
hps://www.qeedji.tech/
Qeedji FRANCE
INNES SA
5A rue Pierre Joseph Colin
35700 RENNES
Tel: +33 (0)2 23 20 01 62
Fax: +33 (0)2 23 20 22 59
Qeedji GERMANY
INNES SA
Verbindungsbüro Deutschland
Lebacher Str. 4
66113 Saarbrücken
Tel : 09386-979 39-14
Fax: 09386-979 39-15
Mob: 0175 853 67 81
Other manuals for TAB10s
4
Table of contents
Other Qeedji Tablet manuals