Showing posts with label 10. Show all posts
Showing posts with label 10. Show all posts

Install Ubuntu 15 10 on Windows 10 VirtualBox

| 0 comments |

Ubuntu 15.10 is now available, this video show how to install it on Windows 10 with VirtualBox.


With Addition CD Image installed, we can improve screen resolution and share folder between guest Linux and host running Windows.


This video show how to, and the screen reesolution improved.


To share folder, setup Shared Folder in VirtualBox Setting of the guest, assign a machine folder in host. Then run the command in guest Ubuntu Linux
sudo mount -t vboxsf vbShare mntShare

where:
vbShare is the shared folder in host, and assigned as Shared Folder in VirtualBox Setting of the guest.
mntShare is the folder in guest Ubuntu Linux.




Related:
- Install Ubuntu GNOME 15.10 on Windows 10/VirtualBox

Related features:
- Record screen video of VirtualBox guest OS
- Share Clipboard and DragnDrop between VirtualBox guest Linux and host Windows


Read More..

Windows 10 add Administrator account in login screen

| 0 comments |
To add Administrator account in login screen:

  • Run Command Prompt as Administrator
  • Enter the command:
    net user administrator /active:yes





Read More..

Install Oracle java8 on Ubuntu 15 10 via PPA

| 0 comments |

To install Oracle java8 on Ubuntu 15.10 via PPA, enter the command:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer



Read More..

Implement dummy Heart Rate Measurement profile using Arduino Due HM 10 for BluetoothLeGatt sample code

| 0 comments |
Previous post "Connect HM-10 (BLE Module) to Android device, with BluetoothLeGatt sample project" show step-by-step to modify Android BluetoothLeGatt sample program, by-pass Heart Rate Measurement profile handling to show function of HM-10.

Here we will send dummy data of Heart Rate Measurement profile by  Arduino Due + HM-10.


First of all, edit BluetoothLeService.java to resume original handling for Heart Rate Measurement profile:
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.example.android.bluetoothlegatt;

import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattDescriptor;
import android.bluetooth.BluetoothGattService;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

import java.util.List;
import java.util.UUID;

/**
* Service for managing connection and data communication with a GATT server hosted on a
* given Bluetooth LE device.
*/
public class BluetoothLeService extends Service {
private final static String TAG = BluetoothLeService.class.getSimpleName();

private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private String mBluetoothDeviceAddress;
private BluetoothGatt mBluetoothGatt;
private int mConnectionState = STATE_DISCONNECTED;

private static final int STATE_DISCONNECTED = 0;
private static final int STATE_CONNECTING = 1;
private static final int STATE_CONNECTED = 2;

public final static String ACTION_GATT_CONNECTED =
"com.example.bluetooth.le.ACTION_GATT_CONNECTED";
public final static String ACTION_GATT_DISCONNECTED =
"com.example.bluetooth.le.ACTION_GATT_DISCONNECTED";
public final static String ACTION_GATT_SERVICES_DISCOVERED =
"com.example.bluetooth.le.ACTION_GATT_SERVICES_DISCOVERED";
public final static String ACTION_DATA_AVAILABLE =
"com.example.bluetooth.le.ACTION_DATA_AVAILABLE";
public final static String EXTRA_DATA =
"com.example.bluetooth.le.EXTRA_DATA";

public final static UUID UUID_HEART_RATE_MEASUREMENT =
UUID.fromString(SampleGattAttributes.HM_10);

// Implements callback methods for GATT events that the app cares about. For example,
// connection change and services discovered.
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
Log.i(TAG, "Connected to GATT server.");
// Attempts to discover services after successful connection.
Log.i(TAG, "Attempting to start service discovery:" +
mBluetoothGatt.discoverServices());

} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
Log.i(TAG, "Disconnected from GATT server.");
broadcastUpdate(intentAction);
}
}

@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
} else {
Log.w(TAG, "onServicesDiscovered received: " + status);
}
}

@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}

@Override
public void onCharacteristicChanged(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
};

private void broadcastUpdate(final String action) {
final Intent intent = new Intent(action);
sendBroadcast(intent);
}

private void broadcastUpdate(final String action,
final BluetoothGattCharacteristic characteristic) {
final Intent intent = new Intent(action);

// This is special handling for the Heart Rate Measurement profile. Data parsing is
// carried out as per profile specifications:
// http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
int flag = characteristic.getProperties();
int format = -1;
if ((flag & 0x01) != 0) {
format = BluetoothGattCharacteristic.FORMAT_UINT16;
Log.d(TAG, "Heart rate format UINT16.");
} else {
format = BluetoothGattCharacteristic.FORMAT_UINT8;
Log.d(TAG, "Heart rate format UINT8.");
}
final int heartRate = characteristic.getIntValue(format, 1);
Log.d(TAG, String.format("Received heart rate: %d", heartRate));
intent.putExtra(EXTRA_DATA, String.valueOf(heartRate));
} else {
// For all other profiles, writes the data formatted in HEX.
final byte[] data = characteristic.getValue();
if (data != null && data.length > 0) {
final StringBuilder stringBuilder = new StringBuilder(data.length);
for(byte byteChar : data)
stringBuilder.append(String.format("%02X ", byteChar));
intent.putExtra(EXTRA_DATA, new String(data) + " " + stringBuilder.toString());
}
}


/*
Log.v("AndroidLE", "broadcastUpdate()");

final byte[] data = characteristic.getValue();

Log.v("AndroidLE", "data.length: " + data.length);

if (data != null && data.length > 0) {
final StringBuilder stringBuilder = new StringBuilder(data.length);
for(byte byteChar : data) {
stringBuilder.append(String.format("%02X ", byteChar));

Log.v("AndroidLE", String.format("%02X ", byteChar));
}
intent.putExtra(EXTRA_DATA, new String(data) + " " + stringBuilder.toString());
}
*/


sendBroadcast(intent);
}

public class LocalBinder extends Binder {
BluetoothLeService getService() {
return BluetoothLeService.this;
}
}

@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

@Override
public boolean onUnbind(Intent intent) {
// After using a given device, you should make sure that BluetoothGatt.close() is called
// such that resources are cleaned up properly. In this particular example, close() is
// invoked when the UI is disconnected from the Service.
close();
return super.onUnbind(intent);
}

private final IBinder mBinder = new LocalBinder();

/**
* Initializes a reference to the local Bluetooth adapter.
*
* @return Return true if the initialization is successful.
*/
public boolean initialize() {
// For API level 18 and above, get a reference to BluetoothAdapter through
// BluetoothManager.
if (mBluetoothManager == null) {
mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
if (mBluetoothManager == null) {
Log.e(TAG, "Unable to initialize BluetoothManager.");
return false;
}
}

mBluetoothAdapter = mBluetoothManager.getAdapter();
if (mBluetoothAdapter == null) {
Log.e(TAG, "Unable to obtain a BluetoothAdapter.");
return false;
}

return true;
}

/**
* Connects to the GATT server hosted on the Bluetooth LE device.
*
* @param address The device address of the destination device.
*
* @return Return true if the connection is initiated successfully. The connection result
* is reported asynchronously through the
* {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)}
* callback.
*/
public boolean connect(final String address) {
if (mBluetoothAdapter == null || address == null) {
Log.w(TAG, "BluetoothAdapter not initialized or unspecified address.");
return false;
}

// Previously connected device. Try to reconnect.
if (mBluetoothDeviceAddress != null && address.equals(mBluetoothDeviceAddress)
&& mBluetoothGatt != null) {
Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection.");
if (mBluetoothGatt.connect()) {
mConnectionState = STATE_CONNECTING;
return true;
} else {
return false;
}
}

final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
if (device == null) {
Log.w(TAG, "Device not found. Unable to connect.");
return false;
}
// We want to directly connect to the device, so we are setting the autoConnect
// parameter to false.
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
Log.d(TAG, "Trying to create a new connection.");
mBluetoothDeviceAddress = address;
mConnectionState = STATE_CONNECTING;
return true;
}

/**
* Disconnects an existing connection or cancel a pending connection. The disconnection result
* is reported asynchronously through the
* {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)}
* callback.
*/
public void disconnect() {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.disconnect();
}

/**
* After using a given BLE device, the app must call this method to ensure resources are
* released properly.
*/
public void close() {
if (mBluetoothGatt == null) {
return;
}
mBluetoothGatt.close();
mBluetoothGatt = null;
}

/**
* Request a read on a given {@code BluetoothGattCharacteristic}. The read result is reported
* asynchronously through the {@code BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int)}
* callback.
*
* @param characteristic The characteristic to read from.
*/
public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.readCharacteristic(characteristic);
}

/**
* Enables or disables notification on a give characteristic.
*
* @param characteristic Characteristic to act on.
* @param enabled If true, enable notification. False otherwise.
*/
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
boolean enabled) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);

// This is specific to Heart Rate Measurement.
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
}
}

/**
* Retrieves a list of supported GATT services on the connected device. This should be
* invoked only after {@code BluetoothGatt#discoverServices()} completes successfully.
*
* @return A {@code List} of supported services.
*/
public List<BluetoothGattService> getSupportedGattServices() {
if (mBluetoothGatt == null) return null;

return mBluetoothGatt.getServices();
}
}


Connect Arduino Due and HM-10:
HM-10 VCC - Arduino Due 3.3V
HM-10 GND - Arduino Due GND
HM-10 Tx - Arduino Due Rx
HM-10 Rx - Arduino Due Tx


Program on Arduino Due, DueSimHeartRate.ino. It only send dummy heart rate data to serial port.
int LED = 13;
boolean LEDst = false;

byte c;

void setup() {
Serial3.begin(9600);
pinMode(LED, OUTPUT);
digitalWrite(LED, LEDst);
}

void loop() {
delay(1000);
c = (byte)0x00;
Serial3.write(c);
c = (byte)80;
Serial3.write(c);

delay(1000);
c = (byte)0x00;
Serial3.write(c);
c = (byte)81;
Serial3.write(c);

delay(10);
c = (byte)0x00;
Serial3.write(c);
c = (byte)82;
Serial3.write(c);

ToggleLED();
}

void ToggleLED(){
digitalWrite(LED, LEDst = !LEDst);
}


Read More..

Quota for Calendar API v3 now 10 times higher

| 0 comments |

Posted by Lucia Fedorova, Tech Lead, Google Calendar API

At Google we like to make 10x rather than 10% improvements. In this spirit, we are increasing the default quota for the Calendar API v3 by a factor of ten, to 1 million requests per day. That means your application can support ten times as many users without any need to apply for more quota.

And if you need even more free quota, you can apply for it in the developer console under APIs -> Calendar API -> Quota -> “Apply for higher quota.” We have also streamlined the process of quota handling to make sure you receive your quota as quickly as possible.

A few tips to work efficiently with your quota:

  • Use push notifications instead of polling.
  • If you cannot avoid polling, make sure you only poll when necessary (for example poll very seldomly at night).
  • Use incremental synchronization with sync tokens for all collections instead of repeatedly retrieving all the entries.
  • Increase page size to retrieve more data at once by using the maxResults parameter.
  • Update events when they change, avoid re-creating all the events on every sync.
  • Use exponential backoff for error retries.
Read More..

Java code to listing Network Interface Addresses run on Windows 10

| 0 comments |
One of the most useful pieces of information you can get from a network interface is the list of IP addresses that are assigned to it. You can obtain this information from a NetworkInterface instance by using one of two methods. The first method, getInetAddresses(), returns an Enumeration of InetAddress. The other method, getInterfaceAddresses(), returns a list of java.net.InterfaceAddress instances. This method is used when you need more information about an interface address beyond its IP address. For example, you might need additional information about the subnet mask and broadcast address when the address is an IPv4 address, and a network prefix length in the case of an IPv6 address. ~ https://docs.oracle.com/javase/tutorial/networking/nifs/listing.html

The following example program lists all the network interfaces and their addresses on a machine (tested on PC running Windows 10):
package javalistinetaddress;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Collections;
import java.util.Enumeration;

public class JavaListInetAddress {

public static void main(String[] args) throws SocketException {
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets))
displayInterfaceInformation(netint);
}

static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
System.out.printf("Display name: %s ", netint.getDisplayName());
System.out.printf("Name: %s ", netint.getName());
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
System.out.printf("InetAddress: %s ", inetAddress);
}
System.out.printf(" ");
}

}



Related:
- Java code to listing Network Interface Addresses, run on Raspberry Pi/Raspbian Jessie

Read More..

Download and Install JDK8 on Ubuntu 15 10 using update alternatives and also set JAVA HOME

| 0 comments |

This post show how to Install JDK8 on Ubuntu 15.10 (running in VirtualBox hosted on Windows 10).

To download Oracle JDK:
- visit Java SE Downloads page.
- Click to download Java Platform (JDK).
- Accept agreement and sselect download file, jdk-8u65-linux-x64.tar.gz.

Download and unpack in your local storage. /home/eric/jdk1.8.0_65 folder for me.

Setup java and javac update-alternatives:
Run the command:
$ sudo update-alternatives --install /usr/bin/javac javac /home/eric/jdk1.8.0_65/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /home/eric/jdk1.8.0_65/bin/java 1

$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java

Where /home/eric/jdk1.8.0_65 is the folder of jdk.

Check the video.


Set JAVA_HOME also:

Setup JAVA_HOME and path to JDK on Linux (Ubuntu in this example), edit the file .bashrc
$ nano .bashrc

Add the line:
export JAVA_HOME=<path to jdk>
export PATH=$JAVA_HOME/bin:$PATH

Where <path to jdk> is the path to the installed JDK.




Alternatively, you can install also Install Oracle java8 on Ubuntu 15.10 via PPA.

Read More..

A new kind of Classroom for 10 million students and teachers

| 0 comments |


(Cross-posted on the Google for Education Blog.)

In a junior high class in Queens, New York, Ross Berman is teaching fractions. He wants to know whether his students are getting the key concept, so he posts a question in Google Classroom and instantly reviews their answers. It’s his favorite way to check for understanding before anyone has the chance to fall behind.

Across the country, in Bakersfield, California, Terri Parker Rodman is waiting at the dentist’s office. She wonders how her class is doing with their sub. With a few swipes on her phone, she finds out which students have finished their in-class assignment and sends a gentle reminder to those who haven’t.
Google Classroom launched last August, and now more than 10 million educators and students across the globe actively use it to teach and learn together, save time, and stay organized. We worked with teachers and students to create Classroom because they told us they needed a mission control – a central place for creating and tracking assignments, sharing ideas and resources, turning in completed work and exchanging feedback. Classroom is part of Google’s lineup of tools for education, which also includes the Google Apps for Education suite – now used by more than 50 million students, teachers and administrators around the world – and Chromebooks, the best-selling device in U.S. K-12 schools.

Here are a few of the stories we’ve heard from teachers and students who are using Classroom.

Learning better together 


We built Classroom to help educators spend less time on paperwork and administrative tasks. But it’s also proven to be highly effective at bringing students and teachers closer together. In London, fifth grader Kamal Nsudoh-Parish stays connected with his Spanish teacher while he does his homework. “If I don’t understand something, I can ask him and he’d be able to answer rather than having to wait until my next Spanish lesson,” Kamal says.

Terri, who teaches sixth grade at Old River Elementary School, also observes that Classroom can strengthen ties and improve communication. “When a student doesnt turn something in, I can see how close they are,” she says. “In the past, I couldnt tell why they didnt finish their work. I was grading them on bringing back a piece of paper instead of what their ability was.”

Resource room teacher Diane Basanese of Black River Middle School in Chester, New Jersey, says that Classroom lets her see her students’ minds at work. “I’m in the moment with them,” she explains. “We have dialogue, like, ‘Oh, are you saying I should use a transition?’ We’re talking to each other. It’s a better way.”


Removing the mundane 


By helping them cut down on busywork, Classroom empowers teachers to do even more with every school day. “I no longer waste time figuring out paper jams at the school photocopier,” says Tom Mullaney, who teaches in Efland, North Carolina. “Absent students no longer email or ask, ‘What did we do yesterday?’ These time savers may not sound like much, but they free me to spend time on things that I consider transcendent in my teaching practice.”

In Mexico City, teachers at Tec de Monterrey high school and university switched to Classroom from an online learning management system that often added complexity to their workflow instead of simplifying it. Professor Vicente Cubells says he’s found the new question feature in Classroom particularly useful for short quizzes, because he can quickly assess learning and have an automatic record of their responses and grades. “The Classroom mobile apps have also become essential for our faculty and students, we use them to stay connected even when we’re not in front of a laptop,” Cubells said.

Giving teachers superpowers 


Teachers are some of the most innovative thinkers in the world, so it’s no surprise that they’ve used Classroom in ways we never even imagined.

Elementary school teacher Christopher Conant of Boise, Idaho, says his students are usually eager to leave school behind during summer break. But after using Classroom last year, they wanted to keep their class open as a way to stay in touch. “Classroom is a tool that keeps kids connected and learning as a community, well beyond the school day, school year and school walls,” said Christopher, who continued to post videos and questions for his students all summer long.

These endless possibilities are the reason why Diane Basanese, a 30-year teaching veteran, says that Classroom is the tool she’s been looking for throughout her career. “It has made me hungrier,” she explains. “I look at how I can make every lesson a hit-it-out-of-the-ballpark lesson.”

Growing our Classroom 


Ever since we began working with teachers and students, its been rewarding and encouraging to hear their stories, collaborate to find answers to their problems, and watch those solutions come to life at schools and universities around the world. Lucky for us, we’re just getting started.
Read More..

Ubuntu 13 10 for Galaxy Nexus first look

| 0 comments |

I have to say I was very excited to install freshly released Ubuntu 13.10 for Nexus devices. I couldnt resist so I took my old Galaxy Nexus (maguro) and I started the installation procedure. Its very simple to do it all manually. Screenshots below!

I didnt have much time to play with this OS on my device, but so far I have mixed feelings. I am aware its the first public release and it MUST have bugs. Of course all fundamental features are working fine (GPS, modem, camera, Bluetooth, touch panel etc.) and on the project site its clearly stated that:
"It is an experimental development snapshot that can potentially brick your device. It does not provide all of the features and services of a retail phone and cannot replace your current handset. This preview is the first release of a very new and unfinished version of Ubuntu and it will evolve quickly."
So far I had few issues like not responding touch screen, system hangs from time to time or it slows down, so that you cant basically do anything except from reboot. However, in most cases its very snappy. Navigating through the system is completely different than on Android. There are no back or home keys, you need to swipe left/right/down/up and swiping effect is different if you swipe from the centre of the screen or from the edge.

I have a feeling that the whole UI is sort of "too large". Massive icons are taking a lot of space and working with this interface is far from being intuitive. I think that this OS would be much more suitable for tablets instead, where the average screen size is 10".

In current stage this OS is surely not suitable for daily use, but the developers are working very hard to fix all submitted issues and to preview all commits. Here are the screenshots:

Home Screen with 3 additional desktops: Music, Applications and Videos


Lock-screen (swipe left to unlock)


System Settings, About the phone and Battery


Phone, Messages and Contacts


Calendar and Album


Sort of "Quick Settings" available from the notification menu



Installed applications screen and a "must have" app ;)


Weather, Gmail and Notes


Navigation panel (available on every screen, even lock-screen), File Manager and Camera



That would be all for now. I think the first preview of the Ubuntu OS for phones looks very promising, however its officially available only for 3 devices for now and it cant be used as a daily driver just yet.

Have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) below this post!
Read More..

Windows 10 Power User Menu

| 0 comments |
Power User Menu of  Windows 10 (and Windows 8) is a pop-up menu with shortcuts tosome usedful "Power User" Windows tools. You can easy access the "Old Control Panel" here.


To Open Power User Menu,

  • Right click the Start button, or 
  • WIN+X: Pressing the WIN (Windows) key and the X key together.


Read More..

Install Ubuntu GNOME 15 10 on Windows 10 VirtualBox

| 0 comments |
Ubuntu GNOME is an official flavor of Ubuntu, featuring the GNOME desktop environment. This video show how to install Ubuntu GNOME 15.10 on Windows 10 with VirtualBox. (Basically, its same as Install Ubuntu 15.10 on Windows 10/VirtualBox).


Download Ubuntu GNOME 15.10 and install on VirtualBox.


Insert Guest Additions CD Image to improve display resolution.


Create shared folder between guest Ubuntu GNOME 15.10 and host Windows 10.

To share folder, setup Shared Folder in VirtualBox Setting of the guest, assign a machine folder in host. Then run the command in guest Ubuntu Linux
$ sudo mount -t vboxsf vbShare mntShare

where:
vbShare is the shared folder in host, and assigned as Shared Folder in VirtualBox Setting of the guest.
mntShare is the folder in guest Ubuntu Linux.


remark@2015-11-14:
Starting with version 4.0, VirtualBox can mount shared folders automatically. This post show how to create share folder between host Windows (D:vbShare) and guest Ubuntu Linux (/media/sf_vbShare), and add current user to the vboxsf group.

Read More..

Connect Windows 10 to HC 06 Bluetooth

| 0 comments |
This post show how to connect Windows 10 to HC-06 Bluetooth Module.


Actually its a loopback connection:
PuTTY Serial connect to Bluetooth Outgoing port -> (Bluetooth) -> HC-06 -> FT232RL -> (USB) -> Arduino IDE Serial Monitot.


This video show how to pair HC-06 on Windows 10, and try the loopback test.




Related:
- Raspberry Pi Bluetooth Serial Terminal, using HC-06 Bluetooth Module, connect from Windows 10 with Bluetooth, using PuTTY.

Read More..