আমি কীভাবে লিনাক্সের একটি ব্লুটুথ সিরিয়াল বন্দরে ডেটা সংযুক্ত করব এবং প্রেরণ করব?


30

আমি লিনাক্সে একটি ইউএসবি-ব্লুটুথ অ্যাডাপ্টারের একটি ভার্চুয়াল সিরিয়াল পোর্ট সেটআপ করার চেষ্টা করছি এবং এটি একটি অ্যান্ড্রয়েড ডিভাইসের মাধ্যমে একটি বার্তা প্রেরণ করব। আমি কার্নেল 3.6 এ আছি। আমি জিনোম-ব্লুটুথ ব্যবহার করে ডিভাইসে সাফল্যের সাথে যুক্ত করতে সক্ষম হয়েছি এবং এতে ফাইল পাঠাতেও সক্ষম হয়েছি।

সিরিয়াল পোর্ট সেট আপ করতে আমি প্রথমে আমার অ্যাডাপ্টারে এসপি প্রোফাইল সহ একটি চ্যানেল যুক্ত করি:

sdptool add --channel=22 SP

তারপরে আমি আরএফকমের সাহায্যে 'শুনি' ডাকি:

rfcomm listen /dev/rfcomm0 22

যা ব্লক করে

Waiting for connection on channel 22

স্পষ্টতই rfcomm একটি সফল সংযোগের উপর / dev / rfcomm0 তৈরি করবে। এটি হয়ে গেলে, আমি সংযুক্ত ডিভাইসে বার বার বার্তা প্রেরণের জন্য কিউটকমের মতো কিছু ব্যবহার করতে চাই।

আমার অ্যান্ড্রয়েড ডিভাইসে আমি একটি ব্লুটুথ এসপিপি টার্মিনাল খুলি (সেখানে বেশ কয়েকটি রয়েছে, আমি কয়েকটি আলাদা চেষ্টা করেছি) এবং সংযোগ দেওয়ার চেষ্টা করি। তারা সব ব্যর্থ।

প্রদত্ত যে আমি কোনও সমস্যা ছাড়াই সাফল্যের সাথে জুড়ি দিতে এবং ফাইলগুলি প্রেরণ করতে পারি, আমি জানি যে ব্লুটুথ জুড়ি এবং যোগাযোগ কাজ করে।

আমি আরও কী চেষ্টা করতে পারি তা নিশ্চিত নই। আরএফসিএমএম চ্যানেলের কোনও দ্বন্দ্ব নেই তা নিশ্চিত করার জন্য আমি আমার স্থানীয় ডিভাইস এবং অ্যান্ড্রয়েড ডিভাইসে 'sdptool ব্রাউজ' ব্যবহার করেছি।

উত্তর:


21

আমি এখন এই কাজ পেয়েছেন বলে মনে হয়। ব্লুটুথটি কিছুটা ফিনিসি মনে হচ্ছে। অন্য কেউ যদি এটির কাজে লাগে সে ক্ষেত্রে আমি আমার পদক্ষেপগুলি পুরোপুরি পুনরায় কল করছি (যদিও এটি প্রাথমিকভাবে আমি চেষ্টা করেছিলাম)। এটি নেক্সাস 4 এবং আর্ক লিনাক্স 3.6.7-1 এ অ্যান্ড্রয়েড জেবি (4.2.2) এর জন্য, জিনোম 3.6 (ডাব্লু / জিনোম-ব্লুটুথ) এর ব্লুজেজ 4.101 সহ।

(এই পদক্ষেপটি কার্যকর কিছু করতে পারে না) অ্যান্ড্রয়েডে ব্লুটুথ চালু করুন এবং আপনার লিনাক্স মেশিন থেকে আপনার ইউএসবি / ব্লুটুথ অ্যাডাপ্টারটি সংযোগ বিচ্ছিন্ন করুন (বা যদি আপনার একটি বিল্ট ইন থাকে, hcitool ডেভনাম রিসেট ব্যবহার করে এটি পুনরায় সেট করুন)

লিনাক্সে আপনার ব্লুটুথ অ্যাডাপ্টারটি সংযুক্ত / চালু করুন। আপনার অ্যাডাপ্টারটি দৃশ্যমান তা নিশ্চিত করুন (জিনোম-ব্লুটুথে সেট করা যেতে পারে - আপনার একটি ব্লুটুথ সিস্টেমের ট্রে আইকনটি দেখতে হবে)।

আপনার অ্যান্ড্রয়েড ডিভাইসে ব্লুটুথ চালু করুন। অ্যাডাপ্টারে জুড়ি রাখতে অ্যান্ড্রয়েড ব্যবহার করুন (আমি লিনাক্স থেকে অন্যভাবে জুড়ি দিতে অক্ষম ছিলাম)। আপনাকে একটি চাবি জিজ্ঞাসা করে একটি কথোপকথন উপস্থিত হবে। আপনি যে কোনও পিন দিন। জিনোমের একটি চাবি জিজ্ঞাসা করে একটি বিজ্ঞপ্তি পপ আপ করা উচিত; আপনি আগে প্রবেশ করানো একই পিনে রাখুন। আপনার অ্যান্ড্রয়েড ডিভাইস এবং কীটি এই সময়ে যুক্ত করা উচিত।

লিনাক্সে, একটি টার্মিনাল খুলুন এবং টাইপ করে কি ব্লুটুথ পরিষেবা উপলব্ধ তা পরীক্ষা করুন

sdptool browse local

আপনার যদি ইতিমধ্যে সিরিয়াল বন্দর পরিষেবা থাকে তবে এটি কী চ্যানেল তা একটি নোট তৈরি করুন। আপনি যদি না করেন তবে আপনি পরিষেবাটি যুক্ত করতে পারেন:

sdptool add --channel=22 SP

এখন আরএফকম ব্যবহার করে এই চ্যানেলে শুনুন:

sudo rfcomm listen /dev/rfcomm0 22

rfcomm অবরুদ্ধ হবে, একটি বার্তার মত একটি সংযোগ শুনতে

Waiting for connection on channel 22

অ্যান্ড্রয়েডে ফিরে, আমি ব্লুটার্ম অ্যাপ্লিকেশন ব্যবহার করেছি ( http://pymasde.es/blueterm/ , গুগল প্লে পাওয়া যায়) যদিও একই জাতীয় অ্যাপ্লিকেশনটির কাজ করা উচিত। ব্লুটার্ম খুলুন, বিকল্পগুলিতে যান> ডিভাইস সংযুক্ত করুন: জোড়াযুক্ত অ্যাডাপ্টারটি নির্বাচন করুন।

আশা করি, অ্যাপ্লিকেশনটি সংযোগ করতে সক্ষম হয়েছিল। আপনি টার্মিনালে অতিরিক্ত যাচাইকরণ দেখতে পাবেন যেখানে আপনি এই জাতীয় বার্তা শোনার জন্য আটকে ছিলেন:

Waiting for connection on channel 22
Connection from 22:22:22:22:22:22 to /dev/rfcomm0
Press CTRL-C for hangup

আপনি ব্লুটার্ম অ্যাপ্লিকেশনটিতে যে কোনও কিছু টাইপ করুন / dev / rfcomm0 এ যাওয়া উচিত। আপনি নতুন টার্মিনালটি খোলার মাধ্যমে এবং এর মতো কিছু করে টাইপ করার সময় আপনি স্টাফটি প্রদর্শিত হতে দেখবেন:

cat /dev/rfcomm0

1
ভাল উত্তর. আমি এটি উবুন্টু 16 / ব্লুজ 5 এবং এই তথ্য: bbs.archlinux.org/viewtopic.php?id=201672 এর সাথে কাজ করতে পেয়েছি ।
wojciii

10

পদক্ষেপগুলি আমার জন্য কাজ করেছে:

প্রথমত আপনাকে ডিভাইসগুলি জোড়া করতে হবে। যুক্ত করা তুলনামূলকভাবে সহজ is আমি ক্লায়েন্টকে (যিনি কথা বলতে শুরু করেন) এবং সার্ভারকে কল করবেন (কে জবাব দেয়)

আপনাকে আগে সার্ভার সেটআপ করতে হবে: সার্ভার সাইড (রুট হিসাবে):

sdptool add --channel=3 SP
mknod -m 666 /dev/rfcomm0 c 216 0
rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 115200 linux

ক্লায়েন্ট পক্ষ (মূল হিসাবে):

sdptool add --channel=3 SP
rfcomm connect /dev/rfcomm0 [SERVER_ADDR] 3

এখন ক্লায়েন্টে সিরিয়াল টার্মিনাল খুলতে:

screen /dev/rfcomm0 115200

মন্তব্যসমূহ:

আপনি যখন ক্লায়েন্টে শেষ কমান্ড rfcomm সংযুক্ত ... কল করবেন, তখন একটি ডিভাইস /dev/rfcomm0তৈরি করা হবে এবং সার্ভারের সাথে যুক্ত হবে /dev/recomm0। এটি উভয়ের মধ্যে সিরিয়াল লিঙ্ক উপস্থাপন করে

সর্বশেষ সার্ভার কমান্ড: rfcomm watch.... আগত সংযোগগুলির জন্য 'শুনবে'। সংযোগ হারিয়েছে, কমান্ডটি একটি নতুন 'শুনুন' অবস্থা পুনরায় চালু করবে।


1
ইসমাইয়া প্রদত্ত উত্তর প্রায় আপনাকে সেখানে পেয়ে যায়। আপনার মনে রাখতে হবে যদিও নতুন ব্লুজেড স্ট্যাকের জন্য বিশেষ --compatবিকল্পের প্রয়োজন, অন্যথায় এসপি যুক্ত করা ব্যর্থ হতে পারে। এখানে দেখুন । সুতরাং আপনার সিস্টেমেড / আরম্ভ করা স্টার্টআপ স্টার্টআপ স্ক্রিপ্টগুলি সামঞ্জস্য / সংশোধন করুন যাতে --compatসেখানে।
ব্ল্যাকটোফু

5

আমি প্রিসের কমান্ডগুলির সামান্য প্রকরণের সাথে এটি সমাধান করেছি। আরএফকমের সংযোগ স্থাপনে যদি এখনও সমস্যা হয় তবে এগুলি শট দিন।

sudo service bluetooth restart

এটি আপনাকে নিশ্চিত করে যে আপনি যখন কোনও সংযোগ সেটআপ করার চেষ্টা করছেন তখনই আপনি একটি পরিষ্কার স্লেট দিয়ে শুরু করছেন।

rfcomm add --channel=<a_channel_#> SP

এই নির্ধারিত চ্যানেলের চেয়ে এই চ্যানেল নম্বরটি পৃথক হওয়া উচিত।

(বিকল্প) চ্যানেলগুলি পরীক্ষা করতে:

sdptool browse local | grep Channel

এই পরবর্তী কমান্ডের প্রয়োজন কেন আমি নিশ্চিত নই, তবে এটি আমার পক্ষে কার্যকর হয়েছিল।

rfcomm release 0

তারপরে অকেজো সংযোগের জন্য শুনতে:

rfcomm watch 0 <a_channel_#>

দ্রষ্টব্য: /etc/bluetuth/rfcomm.conf এ বিটি ম্যাক ঠিকানা তবে আপনার ফোনের বিটি ম্যাক হতে হবে। এছাড়াও এই ফাইলের চ্যানেলটি অবশ্যই__চ্যানেল_ # এর জন্য নেওয়া পাত্রের সমান হতে হবে।

আমি একবার এই সমস্ত কাজ করার পরে, আমি আমার ফোনে একটি বিটি টার্মিনাল এমুলেটর ব্যবহার করে এটি যাচাই করেছিলাম।


0

আমি বিভিন্ন ব্লুটুথ সরঞ্জাম চেষ্টা করেছি এবং একটি ব্লুটুথ মডিউলের সাথে ডেটা সংযোগ স্থাপন এবং আদান-প্রদানের জন্য কমান্ডের সঠিক ক্রমটি খুঁজে পাওয়া শক্ত ছিল। আরএফকম এবং মিনিকোম ব্যবহার করে দেখুন:

এটি আমার /etc/bluetuth/rfcomm.conf

rfcomm0 {
  # Automatically bind the device at startup
  bind no;
  # Bluetooth address of the device
  device 11:22:33:44:55:66;
  # RFCOMM channel for the connection
  channel 3;
  # Description of the connection
  comment "This is Device 1's serial port.";
}

ব্লুটুথ ডিভাইসগুলির জন্য স্ক্যান করুন:

hcitool scan
Scanning ...
    20:15:12:08:62:95   HC-06

আরএফকম ব্যবহার করে বাঁধুন

sudo rfcomm bind 0 20:15:12:08:62:95 1

এনবি: বাইন্ড 0 0 টি ডিভাইস নম্বর 0 (rfcomm0) বোঝায় এবং 1 হল চ্যানেল।

তারপরে সুডো সহ মিনিকোম ব্যবহার করুন এবং একটি কনফিগারেশন সংরক্ষণ করুন যাতে আপনি বাউড্রেট এবং বন্দরটি নির্দিষ্ট করেন। আপনি এখানে আরও তথ্য পেতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.