Knowledge

OBject EXchange

Source 📝

43: 465:
This example shows a single GET command and its response, the only headers involved being connection id, name and end-of-body. Before issuing it, a CONNECT command should have been sent for establishing some parameters of the connection, including the connection id. Other commands are: put, setpath,
457:
In this example, the phonebook is assumed short enough to be contained in a single response object. The only header has 0x49 as its identifier, meaning that it is an "End of Body", the last chunk of information (also the only one, in this case). The first two bits of 0x49 are 01, meaning that the
540:
Similar to file transfer, but uses a target {0x79, 0x61, 0x35, 0xF0, 0xF0, 0xC5, 0x11, 0xD8, 0x09, 0x66, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66}; phonebook entries can be listed (with various possible orderings and filters) and retrieved from certain directories under telecom/ using GET and
554:. In its connectionless form, a single PUT is used to transfer data; otherwise, various files and folders within telecom/ can be retrieved or pushed; a target header {'I', 'R', 'M', 'C', '-', 'S', 'Y', 'N', 'C'} may be used in GET requests to differentiate the kind of indexing used 479:
CONNECT: one of the fields specifies the largest size of packets the client can receive; a TARGET header specifies the kind of service the client is expecting (file-browsing, sync-ml, phonebook access); the server answer with its maximal packet length, the connection id, and other
563:
can synchronize phonebooks, calendars, notes, and other data. In its OBEX binding, the target of the CONNECT object is {'S', 'Y', 'N', 'C', 'M', 'L', '-', 'S', 'Y', 'N', 'C'}; a session then consists in a sequence of PUT-GET pairs where nameless
534:. The target header of the CONNECTION object is {0xF9, 0xEC, 0x7B, 0xC4, 0x95, 0x3C, 0x11, 0xD2, 0x98, 0x4E, 0x52, 0x54, 0x00, 0xDC, 0x9E, 0x09}; the response contains the connection id to use in subsequent GET, PUT, SETPATH and ACTION object. 483:
GET: the client requests a file, specifying the connection id, the file name and/or its type; the server answer with the file content, or just a part of it; in the latter case, the client has to send other GET objects to obtain the rest of the
374:
This object contains two fields (command and length) and two headers. The first field (command) specifies that it is a request for data (GET). The second field is the total size of the object, including the two fields.
490:
GET: the client requests a listing of the folder content by sending an object with the connection id and an appropriate TYPE header (e.g., "x-obex/folder-listing" for file transfer, "x-bt/vcard-listing" for phonebook
275:. In OBEX, a single transport connection may bear many related operations. In fact, recent additions to the OBEX specification allow an abruptly closed transaction to be resumed with all state information intact. 385:
the first byte of the second header is 0x01; this byte identifies this header as a "Name" one; the first two bits of 0x01 are 00, meaning that the content of this header is a null-terminated unicode string (in
458:
content of this header is length-prefixed data: the two next bytes 0x00 0x2F tells the length of this data (in decimal, 47), the succeeding ones are the data, in this case a phonebook comprising only an empty
474:
After the client (e.g., computer) connects to the server (e.g., mobile), a typical session consists in the client sending a number of objects and getting their responses from the server. As an example:
382:
0xCB means that this header is a "Connection ID", a number obtained previously; the two highest-order bits of 0xCB are 11, and this pair specifies that this as a 4-byte quantity;
288:, which are used for a variety of purposes: establishing the parameters of a connection, sending and requesting data, changing the current path or the attributes of a file. 271:
HTTP transactions are inherently stateless; generally an HTTP client opens a connection, makes a single request, receives its response, and either closes the connection or
378:
This object also contains two headers, specifically a "Connection ID" and a "Name". The first byte of each header is the header's name and its content type. In this case:
213:
in providing the client with a reliable transport for connecting to a server and may then request or provide objects. But OBEX differs in many important respects:
524:
Transfers a file from the originator of the request to the recipient; a CONNECTION object containing no target is sent, then PUT is used to transfer the file
494:
PUT: the client sends a file to the server; if it is too large to fit into a single packet, the server will request the next part with a CONTINUE response
367:
0x00 0x74 0x00 0x65 0x00 0x6c 0x00 0x65 0x00 0x63 0x00 0x6f 0x00 0x6d 0x00 0x2f 0x00 0x70 0x00 0x62 0x00 0x2e 0x00 0x76 0x00 0x63 0x00 0x66 0x00 0x00
836:). The callback function can determine whether the response has been completely received, and therefore whether the main program can exit from the 250: 487:
SETPATH: the client tells the server to switch to a different file folder, specifying the connection id and the folder name in two headers
268:
triplets named "Headers" to exchange information about a request or an object. These are much easier to parse by resource-limited devices.
506: 246: 254: 900: 853: 107: 79: 923: 1028:
Windows Phone 7.8 and 8 devices (limited to the transferring of pictures, music and videos via a 'Bluetooth Share' app).
937: 1126: 930: 915: 86: 1062: 907: 126: 159: 60: 93: 64: 194: 75: 1104: 849: 1043: 272: 175: 1110: 591: 265: 155: 299:. As an example, the following may be the object used for requesting the phonebook from a mobile: 550:
was designed for the exchange of phonebook entries, calendar entries, digital business cards, and
587: 53: 466:
action, abort, disconnect. Some other notable headers include: type, time, description, target.
603: 151: 622:, building objects and handling received data. An example schema of a client application is: 100: 852:. nOBEX is a fork of PyOBEX with more complete OBEX support, and support for the Bluetooth 167: 17: 8: 1107:, including specifications for OBEX and OBEX-based protocols (GOEP, FTP, OBEX push, SYNC) 154:
that facilitates the exchange of binary objects between devices. It is maintained by the
832:, received data is processed in the callback function (which was specified when calling 1131: 1038: 178:
and its many successors use OBEX to exchange business cards, data, even applications.
974: 30:
This article is about the communications protocol. For the portion of the brain, see
509:
is made of just CONNECT (without a TARGET header), PUT and an optional DISCONNECT.
990: 181:
Although OBEX was initially designed for infrared, it has now been adopted by
1120: 986: 501:
The exchange may differ significantly depending on the service. For example,
497:
DISCONNECT: the client informs the server that it is closing the session
963: 551: 198: 171: 1073: 1019: 1002: 611: 238: 182: 1084: 42: 1015: 998: 978: 970:, except the Palm Pre, Palm Pre Plus, Palm Pixi and Palm Pixi Plus. 967: 517:
The following protocols runs over OBEX, or have bindings to do so:
242: 257:) stack. Other such "bindings" of OBEX are possible, such as over 982: 390:
form), prefixed by the number of bytes it is made of (0x00 0x1e).
230: 947: 856:
to facilitate OBEX testing on automotive infotainment systems.
619: 560: 502: 218: 186: 163: 394:
A possible response, containing the requested data, could be:
264:
HTTP uses human-readable text, but OBEX uses binary-formatted
170:(OMA). One of OBEX's earliest popular applications was in the 994: 569: 459: 387: 226: 222: 889: 607: 547: 234: 210: 31: 221:
link. OBEX can also be, but is commonly implemented on an
864:
OBEX is the foundation for many higher-layer "profiles":
615: 565: 531: 258: 190: 1099: 450:
0x42 0x45 0x47 0x49 0x4e 0x3a 0x56 0x43 0x41 0x52 0x44
602:
OpenObex is an open-source implementation of OBEX in
67:. Unsourced material may be challenged and removed. 1113:an open source implementation of the OBEX protocol 1118: 848:PyOBEX provides partial support for OBEX in 606:. It provides functions for connecting over 209:OBEX is similar in design and function to 127:Learn how and when to remove this message 1025:Android devices in version 2.1 and above 530:Stores and retrieves files, similar to 14: 1119: 590:provides an implementation of OBEX in 572:files are sent and received, in turn. 204: 956: 65:adding citations to reliable sources 36: 890:Infrared Financial Messaging (IrFM) 843: 24: 576: 25: 1143: 1093: 217:HTTP is normally layered above a 158:but has also been adopted by the 160:Bluetooth Special Interest Group 41: 901:Generic Object Exchange Profile 586:Optional package javax.obex in 505:does not use SETPATH, while an 52:needs additional citations for 1100:OBEX specification at IrDA.org 1078: 1067: 1056: 273:makes other unrelated requests 13: 1: 1049: 581: 512: 7: 1032: 910:(phone to phone transfers) 859: 639:/* process received data */ 597: 527:OBEX File Transfer Protocol 241:, OBEX is implemented on a 10: 1148: 1044:List of Bluetooth profiles 1011:Many other PDAs since 2003 469: 279: 29: 1127:Infrared Data Association 896: 880: 431: 402: 399: 334: 307: 304: 284:OBEX works by exchanging 156:Infrared Data Association 918:(phone to PC transfers) 884:Point and Shoot profile 795:OBEX_TransportDisconnect 624: 185:, and is also used over 1014:Many other phones with 924:Synchronization Profile 588:Java APIs for Bluetooth 422:total length of object 325:total length of object 253:(and, for legacy uses, 197:and in devices such as 1008:LG EnV Touch (VX11000) 938:Basic Printing Profile 840:loop it is executing. 152:communication protocol 27:Communication protocol 931:Basic Imaging Profile 916:File Transfer Profile 669:OBEX_TransportConnect 824:Objects are sent by 753:OBEX_ObjectAddHeader 702:OBEX_ObjectAddHeader 687:OBEX_ObjectAddHeader 168:Open Mobile Alliance 61:improve this article 908:Object Push Profile 869: 348:0x00 0x00 0x00 0x01 1105:Bluetooth profiles 1039:Shared file access 867: 854:Hands Free Profile 205:Comparison to HTTP 957:Supported devices 954: 953: 663:callback_function 630:callback_function 455: 454: 372: 371: 357:"telecom/pb.vcf" 266:type–length–value 142:(abbreviation of 137: 136: 129: 111: 76:"OBject EXchange" 16:(Redirected from 1139: 1087: 1082: 1076: 1071: 1065: 1060: 870: 866: 844:PyOBEX and nOBEX 839: 835: 831: 830:OBEX_HandleInput 828:. After calling 827: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 786:OBEX_HandleInput 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 735:OBEX_HandleInput 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 631: 628: 537:Phonebook Access 451: 440: 439:"BEGIN:VCARD..." 427: 414: 397: 396: 368: 349: 330: 302: 301: 132: 125: 121: 118: 112: 110: 69: 45: 37: 21: 1147: 1146: 1142: 1141: 1140: 1138: 1137: 1136: 1117: 1116: 1096: 1091: 1090: 1083: 1079: 1072: 1068: 1061: 1057: 1052: 1035: 959: 873:Classification 862: 846: 837: 833: 829: 825: 822: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 600: 584: 579: 577:Implementations 515: 472: 443: 438: 425: 412: 360: 344: 328: 282: 207: 144:OBject EXchange 133: 122: 116: 113: 70: 68: 58: 46: 35: 28: 23: 22: 15: 12: 11: 5: 1145: 1135: 1134: 1129: 1115: 1114: 1108: 1102: 1095: 1094:External links 1092: 1089: 1088: 1077: 1066: 1063:javax.obex API 1054: 1053: 1051: 1048: 1047: 1046: 1041: 1034: 1031: 1030: 1029: 1026: 1023: 1012: 1009: 1006: 971: 958: 955: 952: 951: 945: 941: 940: 934: 933: 927: 926: 920: 919: 912: 911: 904: 903: 898: 897:Bluetooth SIG 894: 893: 886: 885: 882: 878: 877: 874: 861: 858: 845: 842: 747:OBEX_ObjectNew 681:OBEX_ObjectNew 625: 599: 596: 583: 580: 578: 575: 574: 573: 558: 555: 545: 542: 538: 535: 528: 525: 522: 514: 511: 499: 498: 495: 492: 488: 485: 481: 471: 468: 453: 452: 441: 436: 433: 429: 428: 423: 420: 416: 415: 410: 407: 406:Response code 404: 401: 392: 391: 383: 370: 369: 358: 355: 351: 350: 342: 339: 338:Connection ID 336: 332: 331: 326: 323: 319: 318: 315: 312: 309: 306: 281: 278: 277: 276: 269: 262: 206: 203: 146:, also termed 135: 134: 117:September 2014 49: 47: 40: 26: 9: 6: 4: 3: 2: 1144: 1133: 1130: 1128: 1125: 1124: 1122: 1112: 1109: 1106: 1103: 1101: 1098: 1097: 1086: 1081: 1075: 1070: 1064: 1059: 1055: 1045: 1042: 1040: 1037: 1036: 1027: 1024: 1021: 1017: 1013: 1010: 1007: 1004: 1000: 996: 992: 988: 987:Sony Ericsson 984: 980: 976: 972: 969: 965: 961: 960: 949: 946: 943: 942: 939: 936: 935: 932: 929: 928: 925: 922: 921: 917: 914: 913: 909: 906: 905: 902: 899: 895: 891: 888: 887: 883: 879: 875: 872: 871: 865: 857: 855: 851: 841: 623: 621: 617: 613: 609: 605: 595: 593: 589: 571: 567: 562: 559: 556: 553: 549: 546: 543: 539: 536: 533: 529: 526: 523: 520: 519: 518: 510: 508: 504: 496: 493: 489: 486: 482: 478: 477: 476: 467: 463: 462:of 47 bytes. 461: 449: 446: 442: 437: 434: 430: 424: 421: 418: 417: 411: 408: 405: 398: 395: 389: 384: 381: 380: 379: 376: 366: 363: 359: 356: 353: 352: 347: 343: 340: 337: 333: 327: 324: 321: 320: 316: 313: 310: 303: 300: 298: 294: 289: 287: 274: 270: 267: 263: 260: 256: 252: 248: 244: 240: 236: 232: 228: 224: 220: 216: 215: 214: 212: 202: 200: 196: 192: 188: 184: 179: 177: 173: 169: 165: 161: 157: 153: 149: 145: 141: 131: 128: 120: 109: 106: 102: 99: 95: 92: 88: 85: 81: 78: –  77: 73: 72:Find sources: 66: 62: 56: 55: 50:This article 48: 44: 39: 38: 33: 19: 1080: 1069: 1058: 997:phones with 863: 847: 826:OBEX_Request 823: 807:OBEX_Cleanup 768:OBEX_Request 717:OBEX_Request 601: 585: 516: 500: 473: 464: 456: 447: 444: 435:End-of-Body 393: 377: 373: 364: 361: 345: 296: 292: 291:Objects are 290: 285: 283: 233:stack on an 208: 180: 166:wing of the 147: 143: 139: 138: 123: 114: 104: 97: 90: 83: 71: 59:Please help 54:verification 51: 552:to-do lists 314:GET, Final 237:device. In 201:smartpens. 1121:Categories 1050:References 582:javax.obex 409:OK, Final 199:Livescribe 87:newspapers 1132:Bluetooth 1020:Bluetooth 1003:Bluetooth 868:Profiles 834:OBEX_Init 792:/* ... */ 657:OBEX_Init 612:Bluetooth 521:OBEX Push 513:Protocols 507:OBEX push 448:0x00 0x2F 426:0x00 0x35 400:Response 365:0x00 0x1e 329:0x00 0x29 239:Bluetooth 183:Bluetooth 1111:OpenOBEX 1033:See also 1016:infrared 999:infrared 979:Motorola 968:Palm III 950:binding 892:profile 876:Profile 860:Profiles 598:OpenObex 432:Headers 335:Headers 311:Command 243:Baseband 172:Palm III 162:and the 983:Samsung 541:SETPATH 491:access) 470:Session 419:Length 403:Fields 322:Length 308:Fields 305:Object 297:headers 286:objects 280:Objects 231:Tiny TP 174:. This 150:) is a 101:scholar 1074:PyOBEX 966:since 948:SyncML 850:Python 813:handle 801:handle 774:object 759:object 750:(...); 741:object 723:object 708:object 693:object 684:(...); 675:object 672:(...); 620:TCP/IP 561:SyncML 557:SyncML 503:SyncML 293:fields 255:RFCOMM 219:TCP/IP 187:RS-232 164:SyncML 148:IrOBEX 103:  96:  89:  82:  74:  1085:nOBEX 995:Nokia 975:Sharp 973:Most 964:Palms 881:IrDA 838:while 789:(...) 783:(...) 780:while 771:(..., 765:...); 738:(...) 732:(...) 729:while 720:(..., 714:...); 699:...); 660:(..., 633:(...) 570:WBXML 460:vCard 388:UCS-2 354:Name 317:0x83 251:L2CAP 227:IrLMP 223:IrLAP 108:JSTOR 94:books 1022:port 1005:port 993:and 962:All 944:OMA 648:main 627:void 618:and 608:IrDA 592:Java 548:IrMC 544:IrMC 484:file 480:data 445:0x49 413:0xA0 362:0x01 346:0xCB 295:and 235:IrDA 211:HTTP 140:OBEX 80:news 32:Obex 18:OBEX 1018:or 1001:or 991:HTC 645:int 616:USB 568:or 566:XML 532:FTP 259:USB 247:ACL 195:WAP 191:USB 176:PDA 63:by 1123:: 989:, 985:, 981:, 977:, 816:); 804:); 777:); 726:); 666:); 651:() 614:, 610:, 594:. 341:1 193:, 189:, 819:} 810:( 798:( 762:, 756:( 744:= 711:, 705:( 696:, 690:( 678:= 654:{ 642:} 636:{ 604:C 261:. 249:/ 245:/ 229:/ 225:/ 130:) 124:( 119:) 115:( 105:· 98:· 91:· 84:· 57:. 34:. 20:)

Index

OBEX
Obex

verification
improve this article
adding citations to reliable sources
"OBject EXchange"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
communication protocol
Infrared Data Association
Bluetooth Special Interest Group
SyncML
Open Mobile Alliance
Palm III
PDA
Bluetooth
RS-232
USB
WAP
Livescribe
HTTP
TCP/IP
IrLAP
IrLMP
Tiny TP

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.