{"id":571,"date":"2012-10-13T16:29:28","date_gmt":"2012-10-13T08:29:28","guid":{"rendered":"http:\/\/xujiwei.com\/blog\/?p=571"},"modified":"2016-12-27T17:01:54","modified_gmt":"2016-12-27T09:01:54","slug":"deploy-libfitbit-in-linux-on-ds211j","status":"publish","type":"post","link":"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/","title":{"rendered":"\u5728\u4f7f\u7528 Linux \u7cfb\u7edf\u7684 NAS \u4e0a\u90e8\u7f72 Fitbit \u6570\u636e\u540c\u6b65\u7a0b\u5e8f"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 ez-toc-wrap-right counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\">\u6587\u7ae0\u76ee\u5f55<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69d003467dbd0\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69d003467dbd0\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E5%BC%80%E6%BA%90%E7%9A%84_Fitbit_%E5%90%8C%E6%AD%A5%E7%A8%8B%E5%BA%8F\" title=\"\u5f00\u6e90\u7684 Fitbit \u540c\u6b65\u7a0b\u5e8f\">\u5f00\u6e90\u7684 Fitbit \u540c\u6b65\u7a0b\u5e8f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#libfitbit\" title=\"libfitbit\">libfitbit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#fitbitd\" title=\"fitbitd\">fitbitd<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E5%9C%A8_DS211j_%E4%B8%8A%E5%AE%89%E8%A3%85%E5%8C%85%E7%AE%A1%E7%90%86%E7%A8%8B%E5%BA%8F_ipkg\" title=\"\u5728 DS211j \u4e0a\u5b89\u88c5\u5305\u7ba1\u7406\u7a0b\u5e8f ipkg\">\u5728 DS211j \u4e0a\u5b89\u88c5\u5305\u7ba1\u7406\u7a0b\u5e8f ipkg<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E5%AE%89%E8%A3%85%E6%89%80%E9%9C%80%E8%BD%AF%E4%BB%B6\" title=\"\u5b89\u88c5\u6240\u9700\u8f6f\u4ef6\">\u5b89\u88c5\u6240\u9700\u8f6f\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E7%BC%96%E8%AF%91_libusb-10\" title=\"\u7f16\u8bd1 libusb-1.0\">\u7f16\u8bd1 libusb-1.0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E4%BD%BF%E7%94%A8_libfitbit\" title=\"\u4f7f\u7528 libfitbit\">\u4f7f\u7528 libfitbit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E7%BB%93%E8%AF%AD\" title=\"\u7ed3\u8bed\">\u7ed3\u8bed<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99\" title=\"\u53c2\u8003\u8d44\u6599\">\u53c2\u8003\u8d44\u6599<\/a><\/li><\/ul><\/nav><\/div>\n<p>\u4f7f\u7528 Fitbit \u5df2\u7ecf\u4e09\u4e2a\u591a\u6708\u4e86\uff0c\u7528\u5b83\u6765\u8bb0\u5f55\u6bcf\u5929\u7684\u8fd0\u52a8\u91cf\u4ee5\u53ca\u7761\u7720\u8d28\u91cf\u611f\u89c9\u5f88\u65b9\u4fbf\u3002<\/p>\n<p>\u4e0d\u8fc7\u56e0\u4e3a\u6211\u7528\u7684\u7535\u8111\u662f\u7b14\u8bb0\u672c\uff0c\u5982\u679c\u8981\u540c\u6b65 Fitbit \u7684\u6570\u636e\uff0c\u5c31\u9700\u8981\u628a Fitbit Base Station \u8fde\u63a5\u5728\u7b14\u8bb0\u672c\u7535\u8111\u4e0a\uff0c\u7136\u540e Fitbit \u7684\u6570\u636e\u624d\u4f1a\u540c\u6b65\u5230\u5b98\u7f51\u4e0a\u3002<\/p>\n<p>\u56e0\u4e3a\u5bb6\u91cc\u6ca1\u6709 24 \u5c0f\u65f6\u5f00\u673a\u7684\u7535\u8111\uff0c\u6240\u4ee5\u6ca1\u529e\u6cd5\u76f4\u63a5\u628a Fitbit Base Station \u8fde\u63a5\u5728\u4e00\u53f0\u7535\u8111\u4e0a\u5b9e\u73b0\u56de\u5bb6\u81ea\u52a8\u540c\u6b65\u3002<\/p>\n<p>\u4f46\u662f\u5bb6\u91cc\u6709\u4e0b\u8f7d\u673a\u662f 24 \u5c0f\u65f6\u8fd0\u884c\u7684\uff0c\u4e8e\u662f\u53bb Fitbit \u5b98\u7f51\u770b\u770b\u6709\u6ca1\u6709\u63d0\u4f9b Linux \u4e0b\u7684 Fitbit \u540c\u6b65\u7a0b\u5e8f\u3002<\/p>\n<p>\u5f88\u4e0d\u5e78\u7684\u662f\uff0cFitbit \u5b98\u65b9\u53ea\u63d0\u4f9b\u4e86 Windows \u548c Mac OS X \u7248\u672c\u7684\u540c\u6b65\u7a0b\u5e8f\uff0c\u6ca1\u6709\u63d0\u4f9b Linux \u4e0b\u7684 Fitbit \u540c\u6b65\u7a0b\u5e8f\u3002<\/p>\n<p>\u6628\u5929\u7a81\u7136\u60f3\u5230\u53bb\u7f51\u4e0a\u627e\u627e\u770b\u6709\u6ca1\u6709\u975e\u5b98\u65b9\u7684 Linux \u5e73\u53f0 Fitbit \u540c\u6b65\u7a0b\u5e8f\uff0c\u6ca1\u60f3\u5230\u8fd8\u771f\u627e\u5230\u4e86\u3002<\/p>\n<p>\u5728\u7f51\u4e0a\u627e\u5230\u4e86\u4e24\u4e2a\u9879\u76ee\uff0c\u7528\u6765\u63d0\u4f9b\u8de8\u5e73\u53f0\u7684 Fitbit \u540c\u6b65\u529f\u80fd\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%BC%80%E6%BA%90%E7%9A%84_Fitbit_%E5%90%8C%E6%AD%A5%E7%A8%8B%E5%BA%8F\"><\/span>\u5f00\u6e90\u7684 Fitbit \u540c\u6b65\u7a0b\u5e8f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"libfitbit\"><\/span>libfitbit<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u9879\u76ee\u5730\u5740\uff1a<https: \/\/github.com\/qdot\/libfitbit><\/p>\n<blockquote><p>\n  libfitbit is an implementation of the data retrieval protocol for the fitbit health tracking device. It also implements a synchronization client for synchronizing data with the fitbit website on platforms not supported by Fitbit currently.\n<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"fitbitd\"><\/span>fitbitd<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u9879\u76ee\u5730\u5740\uff1a<http: \/\/www.paulburton.eu\/projects\/fitbitd><\/http:><\/p>\n<blockquote><p>\n  fitbitd synchronises FitBit trackers with the FitBit.com service. You simply leave it running in the background and it will synchronise the tracker periodically, just like the official FitBit software does for Windows or Mac OS.\n<\/p><\/blockquote>\n<p>libfitbit \u662f\u7528 python \u7f16\u5199\u7684\uff0c\u529f\u80fd\u4e0a\u53ef\u80fd\u76f8\u5bf9\u7b80\u964b\u4e00\u4e9b\uff0c\u800c fitbitd \u662f\u4f7f\u7528 C \u7f16\u5199\u7684\uff0c\u529f\u80fd\u76f8\u5bf9\u4e8e libfitbitd \u5f3a\u5927\u4e00\u70b9\uff0c\u5e76\u4e14\u63d0\u4f9b\u4e86 Linux \u684c\u9762\u73af\u5883\u4e2d\u7684\u72b6\u6001\u680f\u63d2\u4ef6\u3002<\/p>\n<p>\u4e0d\u8fc7\u56e0\u4e3a\u6211\u662f\u8981\u5728 DS211j \u4e0a\u5b89\u88c5\uff0c\u800c DS211j \u7684 CPU \u662f ARM \u800c\u975e x86\uff0c\u56e0\u6b64\u5982\u679c\u8981\u5b89\u88c5\u8fd9\u4e9b\u7a0b\u5e8f\u90fd\u9700\u8981\u81ea\u5df1\u6765\u7f16\u8bd1\u3002<\/p>\n<p>\u5728\u591a\u6b21\u5c1d\u8bd5\u4e4b\u540e\uff0c\u6211\u9009\u62e9\u4e86 libfitbit \u800c\u4e0d\u662f fitbitd\uff0c\u56e0\u4e3a fitbitd \u8981\u7528\u5230 dbus\uff0c\u5728\u7f16\u8bd1\u65f6\u4f1a\u9047\u5230\u5f88\u591a\u95ee\u9898\u3002\u5982\u679c\u53ea\u662f\u4e3a\u4e86\u540c\u6b65 Fitbit \u6570\u636e\uff0clibfitbit \u5df2\u7ecf\u57fa\u672c\u591f\u7528\uff0c\u5e76\u4e14\u50cf daemon \u6a21\u5f0f\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 nohup \u6765\u5b9e\u73b0\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%9C%A8_DS211j_%E4%B8%8A%E5%AE%89%E8%A3%85%E5%8C%85%E7%AE%A1%E7%90%86%E7%A8%8B%E5%BA%8F_ipkg\"><\/span>\u5728 DS211j \u4e0a\u5b89\u88c5\u5305\u7ba1\u7406\u7a0b\u5e8f ipkg<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u6ce8\u610f\uff1a\u6587\u4e2d\u6240\u6709\u5728 NAS \u4e0a\u7684\u64cd\u4f5c\u5747\u4ee5 root \u7528\u6237\u8fdb\u884c<\/strong><\/p>\n<p>\u9996\u5148\u9700\u8981\u5728 DS211j \u7684\u63a7\u4ef6\u53f0\u91cc\u542f\u7528 SSH \u670d\u52a1\uff0c\u7136\u540e\u4f7f\u7528 SSH \u8fde\u63a5\u5230 NAS\uff0c\u5b89\u88c5 ipkg\uff1a<\/p>\n<pre lang='bash'>\nwget http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/syno-mvkw-bootstrap_1.2-7_arm.xsh\nchmod +x syno-mvkw-bootstrap_1.2-7_arm.xsh\n.\/syno-mvkw-bootstrap_1.2-7_arm.xsh\nipkg update\n<\/pre>\n<p>\u6ce8\u610f\uff0c\u5982\u679c\u5b89\u88c5\u5b8c ipkg \u53ef\u80fd\u9700\u8981\u4fee\u6539\u4e00\u4e0b .profile \u6587\u4ef6\uff0c\u9632\u6b62 \/opt \u53ef\u80fd\u6ca1\u6709\u52a0\u5230 PATH \u73af\u5883\u53d8\u91cf\u7684\u95ee\u9898\uff0c\u9700\u8981\u628a\uff1a<\/p>\n<pre lang='bash'>\nPATH=\/sbin:\/bin:\/usr\/sbin:\/usr\/bin:\/usr\/syno\/sbin:\/usr\/syno\/bin:\/usr\/local\/sbin:\/usr\/local\/bin\nexport PATH\n<\/pre>\n<p>\u4fee\u6539\u4e3a\uff1a<\/p>\n<pre lang='bash'>\nPATH=\/opt\/bin:\/opt\/sbin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin:\/usr\/syno\/sbin:\/usr\/syno\/bin:\/usr\/local\/sbin:\/usr\/local\/bin\nexport PATH\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85%E6%89%80%E9%9C%80%E8%BD%AF%E4%BB%B6\"><\/span>\u5b89\u88c5\u6240\u9700\u8f6f\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u7f16\u8bd1\u4ee5\u53ca\u8fd0\u884c\u6240\u9700\u8f6f\u4ef6\u5305\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>gcc<\/li>\n<li>python27<\/li>\n<\/ul>\n<p>\u76f4\u63a5\u4f7f\u7528 ipkg \u5b89\u88c5\u5373\u53ef\uff1a<\/p>\n<pre lang='bash'>\nipkg install gcc python27\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BC%96%E8%AF%91_libusb-10\"><\/span>\u7f16\u8bd1 libusb-1.0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>DS211j \u4f7f\u7528\u7684\u8f6f\u4ef6\u6e90\u4e2d\u7684 libusb \u662f 0.1 \u7248\u672c\u7684\uff0c\u800c libfitbit \u9700\u8981\u7684\u662f 1.0\u3002\u5982\u679c\u4f7f\u7528 libusb-0.1 \u867d\u7136 libfitibt \u53ef\u4ee5\u8fd0\u884c\uff0c\u4f46\u662f\u65e0\u6cd5\u63a5\u6536\u6570\u636e\u3002<\/p>\n<p>\u5148\u53bb <http: \/\/sourceforge.net\/projects\/libusb\/files\/libusb-1.0><\/http:> \u4e0b\u8f7d\u4e00\u4e2a libusb-1.0.9\uff0c\u89e3\u538b\u5230\u653e\u5230 NAS \u4e0a\uff0c\u7136\u540e\u8fdb\u884c\u7f16\u8bd1\u5b89\u88c5\u3002<\/p>\n<p>\u6ce8\u610f\u5728\u7f16\u8bd1\u524d\u9700\u8981\u4fee\u6539 libusb \u7684 Makefile\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u7f16\u8bd1\u7684\u8bdd\uff0c\u5728\u4f7f\u7528\u65f6\u4f1a\u51fa\u73b0\u201cundefined reference to `clock_gettime'\u201d \u9519\u8bef\u3002<\/p>\n<pre lang='bash'>\n.\/configure --prefix=\/opt\nvi libusb\/Makefile\n# \u4fee\u6539 LDFLAGS= \u4e3a LDFLAGS=-lrt\nmake\nmake install\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E4%BD%BF%E7%94%A8_libfitbit\"><\/span>\u4f7f\u7528 libfitbit<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4ece <\/https:><https: \/\/github.com\/qdot\/libfitbit> \u4e0b\u8f7d libfitbit\uff0c\u89e3\u538b\u540e\u628a python \u76ee\u5f55\u653e\u5230 NAS \u7684 \/root \u4e2d\uff0c\u5e76\u4e14\u91cd\u547d\u4ee4\u4e3a libfitbit\u3002<\/p>\n<p>\u4ece <http: \/\/sourceforge.net\/projects\/pyusb\/files\/PyUSB%201.0><\/http:> \u4e0b\u8f7d libfitbit \u4f9d\u8d56\u7684 pyusb \u6a21\u5757\uff0c\u89e3\u538b\u540e\u628a usb \u76ee\u5f55\u653e\u5230 NAS \u7684 \/root\/libfitbit \u76ee\u5f55\u4e2d\u3002<\/p>\n<p>\u8fd9\u65f6\u9700\u8981\u628a Fitbit Base Station \u8fde\u63a5\u5230 DS211j \u4e0a\u3002<\/p>\n<p>\u5728 NAS \u4e0a\u8fdb\u5165 \/root\/libfitbit \u76ee\u5f55\uff0c\u8fd0\u884c <strong>python2 fitbit.py<\/strong> \u6d4b\u8bd5\u5b89\u88c5\u662f\u5426\u6b63\u5e38\u3002<\/p>\n<pre><code>Start reset () {}\n    sent: ['a4', '01', '4a', '00', 'ef']\nreceived: ['a4', '01', '6f', '20', 'ea']\nEnd reset None\n# \u5176\u4ed6\u65e5\u5fd7\u7701\u7565...\nEnd open_channel None\nWaiting for receive\n<\/code><\/pre>\n<p>\u5982\u679c\u51fa\u73b0 <strong>Waiting for receive<\/strong> \u5c31\u8bf4\u660e fitbit.py \u5df2\u7ecf\u6b63\u5e38\u8fd0\u884c\u4e86\uff0c\u5982\u679c\u6709 Fitbit Ultra Tracker \u5728 Fitbit Base Station \u9644\u8fd1\uff0c\u90a3\u4e48\u5c31\u4f1a\u7ee7\u7eed\u51fa\u73b0\u5176\u4ed6\u65e5\u5fd7\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u5c31\u8981\u8ba9 libfitbit \u5728\u540e\u53f0\u4e00\u76f4\u8fd0\u884c\u4e86\u3002libfitbit \u672c\u8eab\u63d0\u4f9b\u4e86\u6bcf\u9694 15 \u5206\u949f\u540c\u6b65\u4e00\u6b21\u6570\u636e\u7684\u529f\u80fd\uff0c\u4f46\u6ca1\u6709\u63d0\u4f9b\u540e\u53f0\u8fd0\u884c\u7684\u529f\u80fd\uff0c\u4e0d\u8fc7\u501f\u52a9\u4e8e Linux \u4e2d\u7684 nohup \u547d\u4ee4\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u3002<\/p>\n<pre><code>nohup python2 fitbit_client.py &gt; \/tmp\/libfitbit.log &amp;\n<\/code><\/pre>\n<p>\u6ce8\u610f\uff0c\u8fd9\u91cc\u4f1a\u628a libfitbit \u4ea7\u751f\u7684\u65e5\u5fd7\u8f93\u51fa\u5230 \/tmp\/libfitbit.log \u4e2d\uff0c\u4f46\u662f \/tmp \u7684\u5bb9\u91cf\u4e0d\u4f1a\u5f88\u5927\uff0c\u6240\u4ee5\u6b63\u5f0f\u4f7f\u7528\u65f6\uff0c\u53ef\u4ee5\u76f4\u63a5\u5c06\u65e5\u5fd7\u8f93\u51fa\u5230 \/dev\/null\uff1a<\/p>\n<pre><code>nohup python2 fitbit_client.py &gt; \/dev\/null &amp;\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BB%93%E8%AF%AD\"><\/span>\u7ed3\u8bed<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u611f\u8c22 <a href=\"https:\/\/github.com\/qdot\/libfitbit\">Kyle Machulis<\/a> \u5e26\u6765\u8fd9\u4e48\u68d2\u7684\u5f00\u6e90\u9879\u76ee\u3002<\/p>\n<p>\u6700\u5f00\u59cb\u4e00\u76f4\u5c1d\u8bd5\u5728 My Book Live \u4e0a\u914d\u7f6e libfitbit \u548c fitbitd\uff0c\u4f46\u662f\u5f04\u5230\u6700\u540e\u7a81\u7136\u53d1\u73b0\uff0cMy Book Live \u5e76\u6ca1\u6709 USB \u63a5\u53e3\u22ef\u22ef<\/p>\n<p>\u5982\u679c\u53ea\u662f Linux \u7528\u6237\u5e0c\u671b\u5728 Linux \u7cfb\u7edf\u4e0b\u540c\u6b65\u6570\u636e\uff0c\u5982\u679c\u53c8\u521a\u597d\u662f Ubuntu \u6216 Mint \u7528\u6237\u7684\u8bdd\uff0c\u90a3\u4e48\u4f7f\u7528 fitbitd \u53ef\u80fd\u662f\u4e00\u4e2a\u66f4\u597d\u7684\u9009\u62e9\uff0c\u56e0\u4e3a\u4f5c\u8005\u5df2\u7ecf\u63d0\u4f9b\u4e86\u4e00\u4e2a PPA \u6e90\u6765\u76f4\u63a5\u5b89\u88c5 fitbitd\uff0c\u5e76\u4e14\u8fd8\u6709\u72b6\u6001\u680f\u63d2\u4ef6\u53ef\u4ee5\u7528\u3002Arch \u7528\u6237\u4e5f\u53ef\u4ee5\u76f4\u63a5\u7528 sudo pacman -Sy fitbitd-git \u6765\u5b89\u88c5\u3002<\/p>\n<p>\u5f53\u7136\uff0c\u5982\u679c\u4f60\u4e5f\u50cf\u6211\u4e00\u6837\uff0c\u4e0d\u559c\u6b22\u7535\u8111\u4e0a\u62d6\u7740\u4e2a\u5c0f\u5c3e\u5df4\uff0c\u5bb6\u91cc\u4e5f\u521a\u597d\u6709\u4e2a\u5e26 USB \u63a5\u53e3\u5e76\u4e14 24 \u5c0f\u65f6\u8fd0\u884c\u7684 Linux \u8bbe\u5907\uff0c\u4e5f\u4e48\u4e5f\u53ef\u4ee5\u6298\u817e\u4e00\u4e0b\u3002<\/p>\n<p>\u5e0c\u671b\u6b64\u6587\u5bf9\u7231\u597d <a href=\"http:\/\/zh.wikipedia.org\/wiki\/%E9%87%8F%E5%8C%96%E7%94%9F%E6%B4%BB\">\u91cf\u5316\u751f\u6d3b<\/a> \u7684\u670b\u53cb\u4eec\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99\"><\/span>\u53c2\u8003\u8d44\u6599<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"http:\/\/forum.synology.com\/wiki\/index.php\/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#How_to_install_ipkg\">Overview on modifying the Synology Server, bootstrap, ipkg etc<\/a><\/li>\n<li><a href=\"http:\/\/forum.synology.com\/wiki\/index.php\/What_kind_of_CPU_does_my_NAS_have\">What kind of CPU does my NAS have<\/a><\/li>\n<li><a href=\"http:\/\/sourceforge.net\/projects\/libusb\/files\/libusb-1.0\/\">http:\/\/sourceforge.net\/projects\/libusb\/files\/libusb-1.0\/<\/a><\/li>\n<li><a href=\"http:\/\/blog.csdn.net\/lyuan13141234\/article\/details\/5667570\">undefined reference to\u6d89\u53ca\u7684\u94fe\u63a5\u95ee\u9898<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/qdot\/libfitbit\">https:\/\/github.com\/qdot\/libfitbit<\/a><\/li>\n<li><a href=\"http:\/\/sourceforge.net\/projects\/pyusb\/files\/PyUSB%201.0\/\">http:\/\/sourceforge.net\/projects\/pyusb\/files\/PyUSB%201.0\/<\/a><\/li>\n<li><a href=\"http:\/\/www.paulburton.eu\/projects\/fitbitd\/\">http:\/\/www.paulburton.eu\/projects\/fitbitd\/<\/a><\/li>\n<li><a href=\"http:\/\/www.fitbit.com\/\">http:\/\/www.fitbit.com\/<\/a><\/li>\n<\/ol>\n<p>--- EOF ---<\/https:><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528 Fitbit \u5df2\u7ecf\u4e09\u4e2a\u591a\u6708\u4e86\uff0c\u7528\u5b83\u6765\u8bb0\u5f55\u6bcf\u5929\u7684\u8fd0\u52a8\u91cf\u4ee5\u53ca\u7761\u7720\u8d28\u91cf\u611f\u89c9\u5f88\u65b9\u4fbf &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/xujiwei.com\/blog\/2012\/10\/deploy-libfitbit-in-linux-on-ds211j\/\">\u7ee7\u7eed\u9605\u8bfb &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[167],"tags":[161,219,191,158,160,16,220],"_links":{"self":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts\/571"}],"collection":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/comments?post=571"}],"version-history":[{"count":0,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts\/571\/revisions"}],"wp:attachment":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/media?parent=571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/categories?post=571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/tags?post=571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}