1b08c118cSDmitry Torokhov=============================================== 2b08c118cSDmitry TorokhovDriver documentation for yealink usb-p1k phones 3b08c118cSDmitry Torokhov=============================================== 4b08c118cSDmitry Torokhov 5b08c118cSDmitry TorokhovStatus 6b08c118cSDmitry Torokhov====== 7b08c118cSDmitry Torokhov 8b08c118cSDmitry TorokhovThe p1k is a relatively cheap usb 1.1 phone with: 9b08c118cSDmitry Torokhov 10b08c118cSDmitry Torokhov - keyboard full support, yealink.ko / input event API 11b08c118cSDmitry Torokhov - LCD full support, yealink.ko / sysfs API 12b08c118cSDmitry Torokhov - LED full support, yealink.ko / sysfs API 13b08c118cSDmitry Torokhov - dialtone full support, yealink.ko / sysfs API 14b08c118cSDmitry Torokhov - ringtone full support, yealink.ko / sysfs API 15b08c118cSDmitry Torokhov - audio playback full support, snd_usb_audio.ko / alsa API 16b08c118cSDmitry Torokhov - audio record full support, snd_usb_audio.ko / alsa API 17b08c118cSDmitry Torokhov 18b08c118cSDmitry TorokhovFor vendor documentation see http://www.yealink.com 19b08c118cSDmitry Torokhov 20b08c118cSDmitry Torokhov 21b08c118cSDmitry Torokhovkeyboard features 22b08c118cSDmitry Torokhov================= 23b08c118cSDmitry Torokhov 24b08c118cSDmitry TorokhovThe current mapping in the kernel is provided by the map_p1k_to_key 25b08c118cSDmitry Torokhovfunction:: 26b08c118cSDmitry Torokhov 27b08c118cSDmitry Torokhov Physical USB-P1K button layout input events 28b08c118cSDmitry Torokhov 29b08c118cSDmitry Torokhov 30b08c118cSDmitry Torokhov up up 31b08c118cSDmitry Torokhov IN OUT left, right 32b08c118cSDmitry Torokhov down down 33b08c118cSDmitry Torokhov 34b08c118cSDmitry Torokhov pickup C hangup enter, backspace, escape 35b08c118cSDmitry Torokhov 1 2 3 1, 2, 3 36b08c118cSDmitry Torokhov 4 5 6 4, 5, 6, 37b08c118cSDmitry Torokhov 7 8 9 7, 8, 9, 38b08c118cSDmitry Torokhov * 0 # *, 0, #, 39b08c118cSDmitry Torokhov 40b08c118cSDmitry TorokhovThe "up" and "down" keys, are symbolised by arrows on the button. 41b08c118cSDmitry TorokhovThe "pickup" and "hangup" keys are symbolised by a green and red phone 42b08c118cSDmitry Torokhovon the button. 43b08c118cSDmitry Torokhov 44b08c118cSDmitry Torokhov 45b08c118cSDmitry TorokhovLCD features 46b08c118cSDmitry Torokhov============ 47b08c118cSDmitry Torokhov 48b08c118cSDmitry TorokhovThe LCD is divided and organised as a 3 line display:: 49b08c118cSDmitry Torokhov 50b08c118cSDmitry Torokhov |[] [][] [][] [][] in |[][] 51b08c118cSDmitry Torokhov |[] M [][] D [][] : [][] out |[][] 52b08c118cSDmitry Torokhov store 53b08c118cSDmitry Torokhov 54b08c118cSDmitry Torokhov NEW REP SU MO TU WE TH FR SA 55b08c118cSDmitry Torokhov 56b08c118cSDmitry Torokhov [] [] [] [] [] [] [] [] [] [] [] [] 57b08c118cSDmitry Torokhov [] [] [] [] [] [] [] [] [] [] [] [] 58b08c118cSDmitry Torokhov 59b08c118cSDmitry Torokhov 60b08c118cSDmitry Torokhov Line 1 Format (see below) : 18.e8.M8.88...188 61b08c118cSDmitry Torokhov Icon names : M D : IN OUT STORE 62b08c118cSDmitry Torokhov Line 2 Format : ......... 63b08c118cSDmitry Torokhov Icon name : NEW REP SU MO TU WE TH FR SA 64b08c118cSDmitry Torokhov Line 3 Format : 888888888888 65b08c118cSDmitry Torokhov 66b08c118cSDmitry Torokhov 67b08c118cSDmitry TorokhovFormat description: 68b08c118cSDmitry Torokhov From a userspace perspective the world is separated into "digits" and "icons". 69b08c118cSDmitry Torokhov A digit can have a character set, an icon can only be ON or OFF. 70b08c118cSDmitry Torokhov 71b08c118cSDmitry Torokhov Format specifier:: 72b08c118cSDmitry Torokhov 73b08c118cSDmitry Torokhov '8' : Generic 7 segment digit with individual addressable segments 74b08c118cSDmitry Torokhov 75b08c118cSDmitry Torokhov Reduced capability 7 segment digit, when segments are hard wired together. 76b08c118cSDmitry Torokhov '1' : 2 segments digit only able to produce a 1. 77b08c118cSDmitry Torokhov 'e' : Most significant day of the month digit, 78b08c118cSDmitry Torokhov able to produce at least 1 2 3. 79b08c118cSDmitry Torokhov 'M' : Most significant minute digit, 80b08c118cSDmitry Torokhov able to produce at least 0 1 2 3 4 5. 81b08c118cSDmitry Torokhov 82b08c118cSDmitry Torokhov Icons or pictograms: 83b08c118cSDmitry Torokhov '.' : For example like AM, PM, SU, a 'dot' .. or other single segment 84b08c118cSDmitry Torokhov elements. 85b08c118cSDmitry Torokhov 86b08c118cSDmitry Torokhov 87b08c118cSDmitry TorokhovDriver usage 88b08c118cSDmitry Torokhov============ 89b08c118cSDmitry Torokhov 90b08c118cSDmitry TorokhovFor userland the following interfaces are available using the sysfs interface:: 91b08c118cSDmitry Torokhov 92b08c118cSDmitry Torokhov /sys/.../ 93b08c118cSDmitry Torokhov line1 Read/Write, lcd line1 94b08c118cSDmitry Torokhov line2 Read/Write, lcd line2 95b08c118cSDmitry Torokhov line3 Read/Write, lcd line3 96b08c118cSDmitry Torokhov 97b08c118cSDmitry Torokhov get_icons Read, returns a set of available icons. 98b08c118cSDmitry Torokhov hide_icon Write, hide the element by writing the icon name. 99b08c118cSDmitry Torokhov show_icon Write, display the element by writing the icon name. 100b08c118cSDmitry Torokhov 101b08c118cSDmitry Torokhov map_seg7 Read/Write, the 7 segments char set, common for all 102b08c118cSDmitry Torokhov yealink phones. (see map_to_7segment.h) 103b08c118cSDmitry Torokhov 104b08c118cSDmitry Torokhov ringtone Write, upload binary representation of a ringtone, 105b08c118cSDmitry Torokhov see yealink.c. status EXPERIMENTAL due to potential 106b08c118cSDmitry Torokhov races between async. and sync usb calls. 107b08c118cSDmitry Torokhov 108b08c118cSDmitry Torokhov 109b08c118cSDmitry TorokhovlineX 110b08c118cSDmitry Torokhov~~~~~ 111b08c118cSDmitry Torokhov 112b08c118cSDmitry TorokhovReading /sys/../lineX will return the format string with its current value. 113b08c118cSDmitry Torokhov 114b08c118cSDmitry Torokhov Example:: 115b08c118cSDmitry Torokhov 116b08c118cSDmitry Torokhov cat ./line3 117b08c118cSDmitry Torokhov 888888888888 118b08c118cSDmitry Torokhov Linux Rocks! 119b08c118cSDmitry Torokhov 120b08c118cSDmitry TorokhovWriting to /sys/../lineX will set the corresponding LCD line. 121b08c118cSDmitry Torokhov 122b08c118cSDmitry Torokhov - Excess characters are ignored. 123b08c118cSDmitry Torokhov - If less characters are written than allowed, the remaining digits are 124b08c118cSDmitry Torokhov unchanged. 125b08c118cSDmitry Torokhov - The tab '\t'and '\n' char does not overwrite the original content. 126b08c118cSDmitry Torokhov - Writing a space to an icon will always hide its content. 127b08c118cSDmitry Torokhov 128b08c118cSDmitry Torokhov Example:: 129b08c118cSDmitry Torokhov 130b08c118cSDmitry Torokhov date +"%m.%e.%k:%M" | sed 's/^0/ /' > ./line1 131b08c118cSDmitry Torokhov 132b08c118cSDmitry Torokhov Will update the LCD with the current date & time. 133b08c118cSDmitry Torokhov 134b08c118cSDmitry Torokhov 135b08c118cSDmitry Torokhovget_icons 136b08c118cSDmitry Torokhov~~~~~~~~~ 137b08c118cSDmitry Torokhov 138b08c118cSDmitry TorokhovReading will return all available icon names and its current settings:: 139b08c118cSDmitry Torokhov 140b08c118cSDmitry Torokhov cat ./get_icons 141b08c118cSDmitry Torokhov on M 142b08c118cSDmitry Torokhov on D 143b08c118cSDmitry Torokhov on : 144b08c118cSDmitry Torokhov IN 145b08c118cSDmitry Torokhov OUT 146b08c118cSDmitry Torokhov STORE 147b08c118cSDmitry Torokhov NEW 148b08c118cSDmitry Torokhov REP 149b08c118cSDmitry Torokhov SU 150b08c118cSDmitry Torokhov MO 151b08c118cSDmitry Torokhov TU 152b08c118cSDmitry Torokhov WE 153b08c118cSDmitry Torokhov TH 154b08c118cSDmitry Torokhov FR 155b08c118cSDmitry Torokhov SA 156b08c118cSDmitry Torokhov LED 157b08c118cSDmitry Torokhov DIALTONE 158b08c118cSDmitry Torokhov RINGTONE 159b08c118cSDmitry Torokhov 160b08c118cSDmitry Torokhov 161b08c118cSDmitry Torokhovshow/hide icons 162b08c118cSDmitry Torokhov~~~~~~~~~~~~~~~ 163b08c118cSDmitry Torokhov 164b08c118cSDmitry TorokhovWriting to these files will update the state of the icon. 165b08c118cSDmitry TorokhovOnly one icon at a time can be updated. 166b08c118cSDmitry Torokhov 167b08c118cSDmitry TorokhovIf an icon is also on a ./lineX the corresponding value is 168b08c118cSDmitry Torokhovupdated with the first letter of the icon. 169b08c118cSDmitry Torokhov 170b08c118cSDmitry Torokhov Example - light up the store icon:: 171b08c118cSDmitry Torokhov 172b08c118cSDmitry Torokhov echo -n "STORE" > ./show_icon 173b08c118cSDmitry Torokhov 174b08c118cSDmitry Torokhov cat ./line1 175b08c118cSDmitry Torokhov 18.e8.M8.88...188 176b08c118cSDmitry Torokhov S 177b08c118cSDmitry Torokhov 178b08c118cSDmitry Torokhov Example - sound the ringtone for 10 seconds:: 179b08c118cSDmitry Torokhov 180b08c118cSDmitry Torokhov echo -n RINGTONE > /sys/..../show_icon 181b08c118cSDmitry Torokhov sleep 10 182b08c118cSDmitry Torokhov echo -n RINGTONE > /sys/..../hide_icon 183b08c118cSDmitry Torokhov 184b08c118cSDmitry Torokhov 185b08c118cSDmitry TorokhovSound features 186b08c118cSDmitry Torokhov============== 187b08c118cSDmitry Torokhov 188b08c118cSDmitry TorokhovSound is supported by the ALSA driver: snd_usb_audio 189b08c118cSDmitry Torokhov 190b08c118cSDmitry TorokhovOne 16-bit channel with sample and playback rates of 8000 Hz is the practical 191b08c118cSDmitry Torokhovlimit of the device. 192b08c118cSDmitry Torokhov 193b08c118cSDmitry Torokhov Example - recording test:: 194b08c118cSDmitry Torokhov 195b08c118cSDmitry Torokhov arecord -v -d 10 -r 8000 -f S16_LE -t wav foobar.wav 196b08c118cSDmitry Torokhov 197b08c118cSDmitry Torokhov Example - playback test:: 198b08c118cSDmitry Torokhov 199b08c118cSDmitry Torokhov aplay foobar.wav 200b08c118cSDmitry Torokhov 201b08c118cSDmitry Torokhov 202b08c118cSDmitry TorokhovTroubleshooting 203b08c118cSDmitry Torokhov=============== 204b08c118cSDmitry Torokhov 205b08c118cSDmitry Torokhov:Q: Module yealink compiled and installed without any problem but phone 206b08c118cSDmitry Torokhov is not initialized and does not react to any actions. 207b08c118cSDmitry Torokhov:A: If you see something like: 208b08c118cSDmitry Torokhov hiddev0: USB HID v1.00 Device [Yealink Network Technology Ltd. VOIP USB Phone 209b08c118cSDmitry Torokhov in dmesg, it means that the hid driver has grabbed the device first. Try to 210b08c118cSDmitry Torokhov load module yealink before any other usb hid driver. Please see the 211b08c118cSDmitry Torokhov instructions provided by your distribution on module configuration. 212b08c118cSDmitry Torokhov 213b08c118cSDmitry Torokhov:Q: Phone is working now (displays version and accepts keypad input) but I can't 214b08c118cSDmitry Torokhov find the sysfs files. 215b08c118cSDmitry Torokhov:A: The sysfs files are located on the particular usb endpoint. On most 216b08c118cSDmitry Torokhov distributions you can do: "find /sys/ -name get_icons" for a hint. 217b08c118cSDmitry Torokhov 218b08c118cSDmitry Torokhov 219b08c118cSDmitry TorokhovCredits & Acknowledgments 220b08c118cSDmitry Torokhov========================= 221b08c118cSDmitry Torokhov 222b08c118cSDmitry Torokhov - Olivier Vandorpe, for starting the usbb2k-api project doing much of 223b08c118cSDmitry Torokhov the reverse engineering. 224b08c118cSDmitry Torokhov - Martin Diehl, for pointing out how to handle USB memory allocation. 225b08c118cSDmitry Torokhov - Dmitry Torokhov, for the numerous code reviews and suggestions. 226