Tuesday, May 23, 2017

Bose Soundlink Bluetooth headphones with A2DP in Ubuntu 16.04

Problem Description

When connecting to computer, my headphones would only connect in headset mode. I could not get it to change to High-Fidelity Playback (A2DP).
Headset would say "call from" after starting playback (very annoying).
 Sound quality was trash.

Solution

Edit /etc/pulse/default.pa
Comment out the line: load-module module-bluetooth-discover
Edit /usr/bin/start-pulseaudio-x11
Add 
/usr/bin/pactl load-module module-bluetooth-discover
after the SESSION_MANAGER if statement.
Reboot
Found a post with the following on archlinux.org forums:
Edit the file:
/etc/pulse/default.pa
and comment out (with an # at the beginning of the line) the following line:
load-module module-bluetooth-discover
now edit the file:
/usr/bin/start-pulseaudio-x11
and after the lines:
   if [ x"$SESSION_MANAGER" != x ] ; then
    /usr/bin/pactl load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null
   fi
add the following line:
/usr/bin/pactl load-module module-bluetooth-discover
This way the Pulse audio's Bluetooth modules will not be downloaded at boot time but after x11 is started.```

Sunday, August 24, 2014

Enable the internet on a Lenovo Yoga 2 11" with Ubuntu 14.04

Just got a Lenovo Yoga 2 11" and put Ubuntu 14.04 on it but instantly ran into problems. After searching I found the fix:
To fix for the current session -
sudo modprobe -r ideapad_laptop
To have the fix persist after reboot -
add file to /etc/modprobe.d/
something like, myblacklist.conf
add line "blacklist ideapad_laptop"

Wednesday, December 4, 2013

Access and stream a webcam over ssh to vlc

Ever had the desire to see if someone was on your computer? Wished you could get on there and just see through your webcam? Me neither, but one day I got curious and wanted to see if/how it could be done. It's kind of a beast of a command, but I just put it in a script which makes it very easy to use.

What you need:
ffmpeg
vlc (or mplayer)

Here's the script.( I actually got it from here. Then just changed it to use vlc because it seems to work better for me.


#! /bin/bash

B="100K"
F="ogg"
ssh <remote_host> ffmpeg -b $B -an -f video4linux2 \
    -s 320x240 -r 10 -i /dev/video0 -b $B -f $F - \
    | vlc -


I would break it down for you but I haven't gotten familiar enough with the ffmpeg command. So all I really do is copy and paste, and I only have a general idea of what it is doing. It worked when I copied it so I didn't need to figure it out to change it. If it isn't working, the first thing I would check is the device name in case it's not /dev/video0
vlc -
just tells vlc to read from stdin.(the pipe)

In my script I substituted <remote_host> for $1 so from the command line I can just run
$./script_name <remote_host>
since I wanted to be able to use it on different computers/webcams instead of just one (if I get more than one webcam on one computer then I may also have /dev/video0 passed as a parameter.

You can change the size with the -s flag I changed mine from 320x240 to 640x480 and it streamed fine.

It may take a few seconds for the picture to actually come through and be received, (I know it does for me) so once you run it then give it a little minute to get that data through to vlc.

So there it is. Just for fun.

Wednesday, November 27, 2013

Useful networking commands

I started to begin a post about useful linux commands and command line tricks. It didn't take long for me to realize that would make a very very long post.

I'm going to start with some more common commands and some I've looked at recently. I expect this list to grow. For most of this I will list the command, my most common use(s) for it, and maybe some examples.

netstat
Useful for seeing what ports are open on your computer and what process is manning those ports. I might use this to make sure something like and ssh-server is running. Very useful on servers - dns,mail,web - for making sure your programs are configures to use the right ports.
netstat -natp
sudo netstat -natp|grep 'sshd'

ssh
If you don't know what this is for or how to use it, I don't see how anything else in this post will help you much.

traceroute
Traces the route a packet takes to get to a destination. I haven't found a really great regular/common use for it, but it is fun to run every once to a while to see where things are going, and what route they are taking.
traceroute www.google.com

mtr
It does the same as traceroute but it consistently pings each hop, and keeps track of packets - dropped, etc - can be useful for seeing where a connection may be getting hung up.
mtr www.google.com

xtightvncviewer
I use this all the time on my personal computers. I have one laptop that the battery doesn't work in, so it's always connected to the tv. It's nice to be able to connect to it from any other computer to change stuff. Or if I am trying to follow something my wife is doing on the computer and guide her through it I can connect in view only mode to always have a visual.
vncviewer remote.ip.addr[:port]
vncviewer -viewonly remote.ip.addr[:port]

whois
This can be useful, but like traceroute is mostly a curiosity thing. It will tell you who a particular ip address is registered to in the whois database.
whois ip.addr

nmap
This is a powerful great program that has many many uses. My most command is seeing things like what other computers are on the network and what services they are running. It scans the network and displays information.
nmap -v -sT -rF 192.168.0.0/24
The above command runs an nmap scan in verbose mode (-v -sT), scans the ip addresses between 192.168.0.0-255 (192.168.0.0/24), Scans in fast mode the most common ports (-F) and scans ports consecutively - not randomly (-r).
I use this with grep to show only the info on open ports.
If all I want to see is the open ssh ports on my network I can use -p22 instead of -rF

sshuttle
This is one great program. I had never heard of it until recently, but it's pretty much the bomb. It can do more but the first thing I've used it fore was to set connect to another computer (via ssh) and route all network traffic through the tunnel. (pretty much sets up a VPN for you via ssh). You can use it to get around dns blocks. Or if someone wants to join your LAN game who is not on your LAN sshuttle will put you on their network.
sshuttle -r <server> --dns 0/0
I did run into a little bit of trouble on ubuntu 12.04 my first time trying it and I actually had to run these comands on the client and server (both ubuntu 12.04)
sudo dpkg-reconfigure resolvconf (select yes on any prompts)
sudo resolvconf --enable-updates
sudo reboot

sshfs
mount an ssh filesystem, I already have this one in another post but here it is for redundancy. You can mount a folder from one computer to an empty folder on your computer. syntax is similar to scp
sshfs <server>:/path/to/source /path/to/destination

Well that's it for now, I'm sure the list will grow.

Monday, September 16, 2013

Using a Raspberry Pi as a media server

Just got a Raspberry Pi. Pretty sweet. So far I like it.

I've had this post as a draft for quite a while, planning to make some great interesting post, but I've run into quite a bit of trouble trying to find a reliable setup that I liked, and that worked.

Here's what I've got that works ok so far:

First off. I don't have that big of an sd card(which is like the hard drive) for my pi. and all of my music is on my desktop computer. First thing I do is use sshfs to gain access to my music.
$sshfs desktop:Music/ Music/
I use public/private rsa keys to connect so I don't need a password. I also have the desktop computer's ip defined in my /etc/hosts file. For any help check here.

Now that I have access to my music, my most used tool is cmus. It is a music player that supports a music library, has vi like commands, and runs inside a terminal. There are others out there, the first I tried was MOC, but after trying cmus I switched.

After logging into my pi via ssh. I run tmux.(more info about tmux here.), then run cmus, find the music I want to listen to, start playing, then detach tmux, and I can then exit ssh.

Another option. If you wanted to control your music from say... your phone. Then I would use:
$vlc -I http ~/Music/
This will run vlc as an http service, the the Music/ folder as the main library. I was using this but I have a large music library, and it was hard to navigate very well. If you specified the folder with all the music you would like to listen to I think this would probably work better.

Currently working on running the nuvola music player, then using nuvolaplayer-client to control it from another computer. If I get it working I will definitely update.
=================
UPDATE: I just installed OpenELEC on my raspberry pi (It runs xbmc). It's easy to set up. I would recommend this method if you are going to be using it for different types of media.

Shell history search

Found at http://lifehacker.com/supercharge-your-command-lines-history-search-with-fou-478683529
I have found this to be very useful. 
create file ~/.inputrc and add these lines:

"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on

This will make it so that when you use the up arrow to go through your search history, if you have anything already typed, it will only search anything with that term. e.g. if you want to run a sudo command from before you can type sudo, then use the up arrow to search commands that were run with sudo.

Monday, September 2, 2013

Using your ssh config file to connect to a computer through a gateway.

At my school I have some public IP addresses and virtual machines for them to use for class projects. I enjoy connecting from home but I have to go through the school's ssh server to connect to a vm(virtual maching). Having to hop through the school's server every single time I want to connect can be cumbersome, and also makes it more difficult to send files to my vm, since I have to send the file to the ssh server, then connect to it and send it again to the vm.
The other day I started looking for a way to modify my ~/.ssh/config file to have it automatically go to the vm. I tried a few different things. Some didn't work and some weren't working because of a  mistake of my own. Finally I found how to make it work. My config file is set up like so:
Host school
HostName domain.name.of.school.ssh.server
User my_school_username

Host ns1
HostName <ip of my master nameserver>
ProxyCommand ssh school -W %h:%p

Host ns2
HostName <ip of slave nameserver>
ProxyCommand ssh school -W %h:%p

The computers ns1 and ns2 are the ones that are behind the school's ssh server, and school I set as the ssh server. the ProxyCommand lines let ssh know that every time I want to connect to ns1 or ns2 that I need to go through 'school'.
One problem I ran into was that I tried to use the HostName ns1 or ns2(since they are designated as such in the ssh config on the school server). That doesn't work. You have to put in the ip of the machine.