Giter VIP home page Giter VIP logo

quicksync4linux's Introduction

QuickSync4Linux

It is annoying that companies always forget to implement their software for the most important operating system. This is a minimal implementation of the Gigaset QuickSync software for Linux.

The communication with the device is based on AT commands over a USB/Bluetooth serial port. For file transfer, the device is set into Obex mode.

Hardware Setup

Make sure your user is in the dialout group in order to access the serial port.

sudo usermod -aG dialout <username>
# logout and login again to apply group membership

Usage

First, find out the correct serial port device. After connecting, a serial port like /dev/ttyACM0 (USB on Linux), /dev/tty.usbmodem (USB on macOS) or /dev/rfcomm0 (Bluetooth on Linux) should appear. /dev/ttyACM0 is used by default. If your device differs, you can use the --device parameter for every command or create a config file ~/.config/quicksync4linux.ini.

Example: ~/.config/quicksync4linux.ini
[general]
device = /dev/rfcomm0
baud = 9600

Then, you can use one of the following commands:

# read device metadata
./quicksync.py info
./quicksync.py obexinfo

# read device contacts and print VCF to stdout (use --file to store it into a file instead)
./quicksync.py getcontacts

# create new contacts on device from vcf file
./quicksync.py createcontacts --file mycontacts.vcf

# overwrite a contact with given luid 517
# luid = Local Unique IDentifier; can be found in `getcontacts` vcf output
./quicksync.py editcontact 517 --file mycontact.vcf

# delete contact with luid 517 from device
./quicksync.py deletecontact 517

# show files on device
./quicksync.py listfiles

# download file "/Pictures/Gigaset.jpg" from device into local file "gigaset.jpg"
./quicksync.py download "/Pictures/Gigaset.jpg" --file gigaset.jpg

# upload local file "cousin.jpg" into "/Clip Pictures/cousin.jpg" on device
./quicksync.py upload "/Clip Pictures/cousin.jpg" --file cousin.jpg

# delete file "/Clip Pictures/cousin.jpg" on device
./quicksync.py delete "/Clip Pictures/cousin.jpg"

# start a call
./quicksync.py dial 1234567890

For debug purposes and reporting issues, please start the script with the -v parameter and have a look at the serial communication.

Formats

VCF Structure

The Gigaset devices expect a VCF like the following example:

BEGIN:VCARD
VERSION:2.1
X-IRMC-LUID:769
N:Last Name;First Name
TEL;HOME:+49123456789
TEL;CELL:+49456789123
TEL;WORK:+49789123456
BDAY:2020-01-01T09:00
END:VCARD

And with special chars encoded as Quoted Printable:

BEGIN:VCARD
VERSION:2.1
X-IRMC-LUID:1099
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:|\\=C2=A7\;;=C3=A4=C3=B6=C3=BC=
=C3=9F
TEL;HOME:+49123
END:VCARD

Picture Format

Important: your image size should match the screen/clip size which can be found by the info command. The device will crash and reboot otherwise when trying to open a non-conform file.

When using GIMP for image creation, use the following values in the JPG export dialog:

  • set "Quality" to 80 or below
  • disable "Save Exif data"
  • disable "Save XMP data"
  • disable "Save thumbnail"
  • disable "Save color profile"
  • disable "Progressive" in the "Advanced Options"

Sound Format

Sounds must use the g722 codec and must be uploaded with the .L22 file extension. Own sounds can easily be converted into g722 using ffmpgeg:

ffmpeg -i "Another brick in the wall part2.wav" -ar 16000 -acodec g722 "AnotherBrick2.g722"

./quicksync.py upload "/Sounds/AnotherBrick2.L22" --file "AnotherBrick2.g722"

Please cut your audio track into a reasonable length before converting and uploading it.

Dial When Clicking tel: Links

To start a call with you Gigaset when clicking tel: links, you need to register QuickSync4Linux as tel: handler in your operating system. On Linux, you do this by copying quicksync4linux.desktop into /usr/share/applications and then execute update-desktop-database.

quicksync must be in you PATH variable. You can simply create a symlink for this: sudo ln -s /path/to/your/quicksync.py /usr/local/bin/quicksync.

Tested Devices

Please let me know if you tested this script with another device (regardless of whether it was successful or not).

  • Gigaset S68H (Bluetooth working, no USB port)
  • Gigaset CL660HX (USB working, no Bluetooth)
  • Gigaset SL450HX (USB + Bluetooth working)
  • Gigaset S700H PRO (USB + Bluetooth working)

Common Errors

  • Device reported an AT command error Make sure you are on the home screen on the device. Do not open the contacts, menu or Media Pool when transferring data.

Support

If you like this project please consider making a donation using the sponsor button on GitHub to support further development. If your financial resources do not allow this, you can at least leave a star for the Github repo.

Furthermore, you can hire me for commercial support or adjustments and support for new devices. Please contact me if you are interested.

quicksync4linux's People

Contributors

brianicke avatar schorschii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

brianicke

quicksync4linux's Issues

Firmware update

Hello, I have a gigaset device running unify firmware and i want to flash it back. I have reversed the application and can get the firmware image from gigaset. But how do i get the device into a mode where it will accept the firmware update. I have a Gigaset SL750H Pro

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.