I know how to connect bluetooth headset to Ubuntu, so I can e.g. speak with Skype remotely.
Now I have the opposite question: How to turn Ubuntu into a sophisticated headset, that can record both input and output sound streams? I lack decent sound recording capabilities in my phone (Nokia 6310i) and I hope that I can help it a little with my Notebook.
Turning on A2DP sink and source is not enough for my Notebook to be visible as a remote Headset on the phone. I guess I need to turn on some another extra bluetooth protocol (like HFP profile).
I've discovered a utility [nohands][3]
that promises to do just that, but it fails to build on the Ubuntu 14.04 and looks abandoned for 4 years.
After satisfying the dependencies (at least according to the ./configure
) it fails to build:
[adam:/home/Adama-docs/Adam/Adam/linux/tmp/nohands]$ make
make all-recursive
make[1]: Entering directory `/home/Adama-docs/Adam/Adam/linux/tmp/nohands'
Making all in libhfp
make[2]: Entering directory `/home/Adama-docs/Adam/Adam/linux/tmp/nohands/libhfp'
g++ -DHAVE_CONFIG_H -I. -I.. -I../include -include config.h -Wshadow -fno-exceptions -g -Wall -MT bt.o -MD -MP -MF .deps/bt.Tpo -c -o bt.o bt.cpp
In file included from bt.cpp:48:0:
../include/libhfp/bt.h: In member function ‘void libhfp::BtDevice::DisconnectAll()’:
../include/libhfp/bt.h:1081:50: warning: converting ‘false’ to pointer type for argument 1 of ‘void libhfp::BtDevice::__DisconnectAll(libhfp::ErrorInfo*)’ [-Wconversion-null]
void DisconnectAll(void) { __DisconnectAll(false); }
^
In file included from bt.cpp:42:0:
bt.cpp: In static member function ‘static int libhfp::SdpAsyncTaskHandler::SdpLookupChannel(libhfp::SdpTaskParams&)’:
bt.cpp:81:20: error: taking address of temporary [-fpermissive]
sdp = sdp_connect(BDADDR_ANY, &htp.m_bdaddr, SDP_RETRY_IF_BUSY);
^
bt.cpp: In member function ‘bool libhfp::BtHub::Start(libhfp::ErrorInfo*)’:
bt.cpp:1226:22: error: taking address of temporary [-fpermissive]
m_sdp = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY);
^
bt.cpp:1226:34: error: taking address of temporary [-fpermissive]
m_sdp = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY);
^
In file included from ../include/libhfp/bt.h:31:0,
from bt.cpp:48:
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::operator()(TA1) [with TA1 = libhfp::SdpTask*]’:
bt.cpp:219:25: required from here
../include/libhfp/events.h:816:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:816:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::SdpTask*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:816:13: note: use ‘this->Invoke’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1, TA2>::Register(TargT*, void (TargT::*)(TA1, TA2)) [with TargT = libhfp::SdpAsyncTaskHandler; TA1 = libhfp::SocketNotifier*; TA2 = int]’:
bt.cpp:349:27: required from here
../include/libhfp/events.h:853:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:853:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::SocketNotifier*, int, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:853:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::operator()(TA1) [with TA1 = libhfp::HciTask*]’:
bt.cpp:687:25: required from here
../include/libhfp/events.h:816:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:816:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::HciTask*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:816:13: note: use ‘this->Invoke’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::Register(TargT*, void (TargT::*)(TA1)) [with TargT = libhfp::BtHci; TA1 = libhfp::TimerNotifier*]’:
bt.cpp:894:48: required from here
../include/libhfp/events.h:810:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:810:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::TimerNotifier*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:810:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1, TA2>::Register(TargT*, void (TargT::*)(TA1, TA2)) [with TargT = libhfp::BtHci; TA1 = libhfp::SocketNotifier*; TA2 = int]’:
bt.cpp:895:51: required from here
../include/libhfp/events.h:853:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:853:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::SocketNotifier*, int, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:853:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::Register(TargT*, void (TargT::*)(TA1)) [with TargT = libhfp::BtHub; TA1 = libhfp::TimerNotifier*]’:
bt.cpp:1142:41: required from here
../include/libhfp/events.h:810:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:810:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::TimerNotifier*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:810:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1, TA2>::Register(TargT*, void (TargT::*)(TA1, TA2)) [with TargT = libhfp::BtHub; TA1 = libhfp::SocketNotifier*; TA2 = int]’:
bt.cpp:1254:53: required from here
../include/libhfp/events.h:853:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:853:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::SocketNotifier*, int, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:853:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::operator()(TA1) [with TA1 = libhfp::ErrorInfo*]’:
bt.cpp:1415:30: required from here
../include/libhfp/events.h:816:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:816:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::ErrorInfo*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:816:13: note: use ‘this->Invoke’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1, TA2>::operator()(TA1, TA2) [with TA1 = libhfp::BtDevice*; TA2 = libhfp::ErrorInfo*]’:
bt.cpp:1447:27: required from here
../include/libhfp/events.h:859:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:859:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::BtDevice*, libhfp::ErrorInfo*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:859:13: note: use ‘this->Invoke’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::Register(TargT*, void (TargT::*)(TA1)) [with TargT = libhfp::BtHub; TA1 = libhfp::HciTask*]’:
bt.cpp:1506:58: required from here
../include/libhfp/events.h:810:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:810:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::HciTask*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:810:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::operator()(TA1) [with TA1 = libhfp::BtManaged*]’:
bt.cpp:1705:31: required from here
../include/libhfp/events.h:816:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:816:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::BtManaged*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:816:13: note: use ‘this->Invoke’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1>::Register(TargT*, void (TargT::*)(TA1)) [with TargT = libhfp::BtDevice; TA1 = libhfp::HciTask*]’:
bt.cpp:1784:65: required from here
../include/libhfp/events.h:810:28: error: ‘RegisterDirect’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RegisterDirect(targp, mfp);
^
../include/libhfp/events.h:810:28: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::HciTask*, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:810:28: note: use ‘this->RegisterDirect’ instead
../include/libhfp/events.h: In instantiation of ‘void libhfp::Callback<void, TA1, TA2, TA3>::operator()(TA1, TA2, TA3) [with TA1 = libhfp::BtDevice*; TA2 = const char*; TA3 = libhfp::ErrorInfo*]’:
bt.cpp:1813:48: required from here
../include/libhfp/events.h:903:13: error: ‘Invoke’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Invoke(ia);
^
../include/libhfp/events.h:903:13: note: declarations in dependent base ‘libhfp::CallbackAdapter<void, libhfp::ArgSet<libhfp::BtDevice*, const char*, libhfp::ErrorInfo*, libhfp::Nil, libhfp::Nil, libhfp::Nil> >’ are not found by unqualified lookup
../include/libhfp/events.h:903:13: note: use ‘this->Invoke’ instead
make[2]: *** [bt.o] Error 1
make[2]: Leaving directory `/home/Adama-docs/Adam/Adam/linux/tmp/nohands/libhfp'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/Adama-docs/Adam/Adam/linux/tmp/nohands'
make: *** [all] Error 2
0 Answers