Samsung Rugby 4 and Linux
2015.11.28

1. About
2. Kermit (AT Commands)
3. Gammu
4. OBEX
5. Tips
    a. Best connection method - Samsung's Kies mode
    b. Creating compatible M4A files
6. Bugs
7. Reference

1. About
The Samsung Rugby 4 (SM-B780A) is a mobile flip phone with a USB 2 interface.  The phone also hosts a MicroSD memory slot  for additional storage up to 32GB.  The USB interface will act as a serial terminal if the Linux qcaux.ko kernel module is loaded.  (ie. Qualcomm USB Auxiliary Serial Port driver, creating a /dev/ttyACM0 device file.)  This phone also offers BlueTooth and WiFi interfaces, however I have not tried utilizing the below tasks with the BlueTooth or WiFi interfaces.  Although the BlueTooth interface should work with Gammu, BlueTooth transfer rates will be much slower than a wired connection.

    Operating System:  It maybe noted, this Samsung Rugby 4 maybe running Linux for an operating system, based on deducing the supported operating systems documented within the Intel Centrino Advanced-N 6230 Dual Band CPU (ie. Intel XMM6230 CPU) specifications; citing Microsoft Windows and Linux operating supported.  Samsung's website only states "OS: MMP / Samsung Proprietary" for this Rugby 4.  Samsung's proprietary operating system Bada was stated as being migrated to Tizen.  Comparison of the Rugby 4's icons seems to still resemble the Bada operating system.  However, these are merrily graphical in nature.  Samsung's notation for MMP may reference "Mondriaan Memory Protection".  Possible operating systems are Linux, Android, Samsung Bada, Samsung Tizen, and Qualcomm's Brew due to the serial port driver used within Linux.  Due to wants not being stated, I'm guessing a form of Linux.  Until somebody extracts the firmware, we likely will not know for some time.


2. Kermit (AT Commands)
My personal favorite serial communication tool is kermit.  Following is a configuration file.

File /home/roger/.kermrc

set modem type none
set line /dev/ttyACM0
set speed 115200
set carrier-watch off
log session ~/kermit/session.log


Connect the Samsung Rugby to your Linux computer via the USB interface and ensure the qcaux module is loaded, creating the /dev/ttyACM0 device file.  Start kermit via command line console and issue the connect command.  Once connected, issuing AT+CLAC will return a listing of supported AT Commands for your device.  Some commands are already documented on the Internet and some within Gammu source code.  (ie. AT+CPBR or PhoneBookRetrieve command)  Be aware some commands will restart the mobile device such as the AT+FSF prefixed commands.

*NOTE: Cheaper Samsung phones having a USB port (ie. Samsung Gusto 3) seem to disable AT Commands, or maybe just the Samsung Verizon (or CDMA) phones do not have AT Command support as they're using CDMA phone technology.  While GSM/GSPR (ie. AT&T) do provide AT Commands.


3. Gammu
Ensure the Linux Kernel qcaux module is loaded, creating the /dev/ttyACM0 device file and your user is within the appropriate group (eg. /etc/group) for accessing this device file.

[gammu]
port = /dev/ttyACM0
connection = at115200
;model=mobex
model = at
Logfile = /home/roger/tmp/gammu.log
Logformat = textall


Supposedly "model = mobex" is the Samsung OBEX protocol, but I was not able to successfully communicate with the Samsung Rugby 4 as of yet.  Seems only "model = at" works.

First, identify your connected phone.

$  gammu 0 identify
Device         : /dev/ttyACM0
Manufacturer   : Samsung
Model          : unknown (SM-B780A)
Firmware       : B780AUSOE3
IMEI           : 888888888888888


Return 1-20 phone book entries
$ gammu --getmemory ME 1 200

Backup all possible data
$ gammu 0 --backup /tmp/phonebook.log

Automatically backup all possible data
$ (echo no; echo ALL) | gammu --backup phonebook.log

Other gammu commands, such as Calendar and Tasks likely are not yet implemented with the Samsung Rugby.


4. OBEX

Recently I've found the Samsung Rugby supports Samsung's OBEX file system or something called mobex.  To activate OBEX mode via AT Commands, issue the  AT+SYNCML=MOBEXSTART command.  The protocol is documented within the samsyncro Google Code project and the documentation is titled "Documentation of the m-obex protocol used by some Samsung mobiles" and currently hosted as a Wiki page.  This is as far as I've gotten with this protocol.


5. Tips

    a. Seemingly the best protocol to set for the connection method of these phones is Samsung's Kies mode.  Set this as the default mode within the settings page of the device.  Kies mode allows both, AT Commands and the additional MicroSD storage to be utilized at the same time.

    b. Creating compatible M4A files.

        I had trouble creating Samsung playable files using FAAC, and had better success using FFmpeg.

       $ ffmpeg -i infile.wav -c:a libfdk_aac -cutoff 20000 -vbr 5 outfile.m4a
      
$ ffmpeg -i nokia-ring-ring-32bit-48000Hz-clipped.wav -c:a libfdk_aac -cutoff 20000 -vbr 5 nokia-ring-ring.m4a


6. Bugs

RESTRICTED FILENAME LENGTH
Took me a while to understand why some of my classical music was not being seen by the device even after verifying the files did exist on the MicroSD card, the device appears to be limiting filenames to less than 64 characters.  The only file system having such a requisite is the ISO 9660 or Juliet file systems.  As such I believe operating system on the device is mounting the MicroSD storage within a ISO9660 or Juliet emulation mode.  After ensuring all my classical filename's were all less than 64 characters, the device seemingly had no additional problems reading in all the file's metadata.

The following snippet allows you to easily find *.m4a files with file names greater than 64 characters and prints the file names to terminal.  From here, move or rename those files names by either; Removing duplicate words within the file name, Removing the chatter near the end of the file name, or Removing duplicate spaces or not needed punctuation.  Oddly, I found abcde.sh duplicating the track's name within the file name.  Less odd were the not needed duplicate punctuation marks or underscores.  Lastly if the previous did not shorten the name to less than 64 characters, removed some of the file name's ending chatter just prior to the three letter file type file suffix.

# Find file name lengths less/greater than size
$ find . -type f -printf "%f\n" |grep m4a | awk 'length($0) > 64 { print NR ":" $0 }'

COVER/LID DISPLAY SCREEN BRIGHT WHITE LOGO SCREEN
Another nagging issue is the service provider AT&T startup logo/animation, and is also displayed on the outer display as a bright white screen whenever dialing a number.  Obviously Gammu only works with maintaining the animations and logos with Nokia phones, while also AT Commands seemed to not adequate for augmenting the animation or logo files.

ID3 FILENAME TAGS NOT UPDATING
The Samsung Rugby 4 seems to prefer ID3v1 and/or ID3v2.3 (id3lib via EasyTag) tags.  Problems seem to occur when using ID3v2.4 (libid3tag via EasyTag) tags.  When an MP3 file provides both ID3v1 (end of file) and ID3v2.3 (start of file) tags, the device may use either.  The device displays the "Audiobook" Genre when using ID3v2.3 tags, and only displays "Unknown" when using ID3v1 tags, or when using more than on tag versions.  If the users was using ID3v1 and ID3v2.4 and then reverted to using ID3v1 and ID3v2.3, the phone database may still revert to using only ID3v1.  Removing the battery may reset the database, giving preference to the later ID3v2.3 acceptable version.  The device's optimal ID3 tag version seems to be ID3v2.3 as the ID3v2.3 version does successfully print the Audiobook Genre instead of unknown Genre when using ID3v1.  (ID3v2.4 seems to send all tags into unknown fields.)

Seems the phone operating system only updates certain ID3 tags only once during the initial file import/transfer to the phone.  (ie. I presume these are the sort fields, such as Album and Genre contained within a separate sorting database, while apparently updating the file name tag only?)  Once the user fixes the filename lengths to less than 16 bytes as noted above, users now have to contend with this bug for their MP3 (or music) files.  Removing the battery seems to alleviate some of these issues, but the phone's date and time information requires manual updating as well as other settings afterwards.  The best fix is to attach the device to a computer using a USB cable and port capable of supplying backup power while removing the back case and battery to gain access to the MicroSD card.  Remove the MicroSD card and reinsert the battery.  Power on the device, and may require the USB cord to be removed.  (The device gets buggy at this point, as you'll be presented with a large battery power charging icon with the device defaulting to powered off.)  Once the device is powered back on and you have verified the MP3 player's database is empty of entries, repeat the process and instead reinsert the MicroSD card.  Upon the device's restart and database initialization, you'll hopefully find your MP3 ID3 tags are now showing.

The likely reason for this bug, the sorting database for files with ID3 tags is located on the phone memory.  In order to force a rescan, the device has to see the files have changed, and the only method to do this is by removing and reinserting the MicroSD memory card.  (ie. See the file properties, file added date.)

7. Reference
AT Commands Reference Guide  (AT_Commands_Reference_Guide_r0.pdf)
Commands in SCH-A890 (http://es.edaboard.com/topic-371460.0.html)
SamsungS105v1_6h.txt (http://gatling.ikk.sztaki.hu/~kissg/gsm/atscan/unprocessed/SamsungS105v1_6h.txt)
BitPIM development files and forums contains AT Commands for Samsung phones.