Showing posts with label project. Show all posts
Showing posts with label project. Show all posts

Sunday, January 20, 2019

Install Ubuntu on Lenovo Tablet MIIX 300

If you have the Lenovo MIIX 300 tablet, you may be in luck if you want to install Ubuntu on this device.



I got mine a few years ago at Best Buy for really cheap as it was an opened box.  It came pre-installed with Windows 10 32 bits edition.  The table come with a detachable keyboard so you can use it as a small laptop or a regular tablet.

My main issue with the Lenovo MIIX 300 was the 32 bits installation of Windows.  More and more apps are only supporting the 64 bits version so there is less and less apps/games that I can install on this neat device.

Last year, I did try to install Ubuntu on it without much success.  But with the latest version,  Ubuntu 18.10, it's almost perfect.  Yep, there is a few hurdles but nothing impossible.

The main issues:
  • Sound does not work out-of-the-box but it's easy to fix
  • Display orientation is wrong, but there is a workaround
  • From time to time, the device will freeze completely
    • Press POWER button 10 seconds to shutdown See Note...
  • Bluetooth does not work  Bluetooth work is updating to 19.04
  • Webcam does not work
NOTE:  Seems that adding this line to /etc/default/grub is preventing freezing: 


```/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi="
```
and then you have to run:
```
$ sudo update-grub

Read the complete post: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1784152

Note 2:  The grub setting did not work.  I took a longer time but it eventually froze again.  But I discovered that the tablet is not frozen just the touch interface.  Doing a reload of the hid_multitouch module fixes the issue.

> sudo rmmod hid_multitouch
> sudo modprobe hid_multitouch


The issue now is figuring a way to reload the module just without the physical keyboard.

Note 3: Updating to the latest developpement version of Ubuntu (19.04) has enabled the Bluetooth device.  I was able to use my Bluetooth earbuds with it.

Step 1

Download the desktop version of Ubuntu.  The default flavor does work but I found that Ubuntu Budgie works better as is it a bit lighter.  The KDE flavor didn't work.

You'll also need a special file to boot from the USB drive, on with we will create the boot disk.

Download the bootia32.efi file.  This is required on this machine.  Here's a link on GitHub!

Also, download the driver files for the sound card as by default, it does not work.  Here's the link on GitHub!

Get a USB key drive having at least 2+ Gigs available.  Create your bootable USB drive using Rufus in Windows.  Make sure to select the GPT scheme for the boot partition.

If you are already on Ubuntu, here's how to do it:
  1. Insert your USB key on your computer.  
  2. GParted is required on this machine.  Install it...
  3. In GParted, select your device and "Create a partition table" from the menu
    1. Select the format as GPT, and not MSDOS
    2. Set the size as 2 MB
    3. This will wipe your USB drive
  4. Once done, create a FAT 32 partition having at least 2 Gigs 
  5. Mount the ISO image so you'll be able to copy the files from the ISO archive.
    1. From the console: sudo mount -o loop ubuntu-18.10.x-desktop-amd64.iso /mnt/somefolder
  6. Open Nautilus, and press CTRL-H to show all hidden file from the mounted archive and copy everything into the FAT 32 partition on your USB drive.
  7. Once done, copy the bootia32.efi file into [USB Drive]/BOOT/EFI
    1. This is mandatory!
  8. Also, copy the audio drivers at the root of your USB drive as they will be needed later.
You should be all set now to boot into Ubunbtu.

Step 2

By default, your tablet disc is encrypted using "Safe Boot".  You'll need to go into the settings of Windows to deactivate it.  You'll also need to deactivate the encryption in the "Boot" manager.  This is required to be able to boot from another device and interact with the hard disc.

If I remember well, this process has to be done in Windows first.  It takes a few hours to complete.  Once done, you need to boot into the "Boot" section.  When rebooting, while seeing the Lenovo logo, press "Fn"+2 (F2).  You get the configuration screen for the machine and you can disable the Safe Boot from there.

Careful with this step.  Be patient and do the whole process before doing anything else.

In the end, you should be able to boot into Windows with an unencryted hard drive.

Step 3

This is the moment of truth.  Plug your tablet to the keyboard as we need the USB ports.  Insert your USB boot drive and reboot your device.
  1. You can do it be going into the recover section of Windows 10
  2. You can also for the boot device pressing "Fn"+"+" (F12) on the keyboard.
You all steps have been followed correctly you should see your USB boot disk in the selection.  Boot with it and wait around 30 seconds.

Eventually, you'll get the Ubuntu Desktop, in Portrait mode.  Rotation does work, but it's not in sync with the physical state of the device.  The fun begins...

Step 4

For some reason, the rotation does not work correctly.  In Landscape, the desktop will be rotated clockwise in Portrait mode.  I've tried a few things to fix it but I eventually removed the support of the gyroscope:  sudo apt-get remove iio-sensor-proxy

Most of the time, I use my table in Landscape anyway.  You<ll have to do this when installed also.

Once removed, find the Desktop settings and select the proper orientation.  It can be done also using the command line: xrandr -o right (or left if it's in the wrong orientation).

On the final setup, I have created keyboard shortcuts to change the orientation as needed using the xrandr command.

Once your display shows in the proper orientation, you can enabled your WIFI connection as it is supported out-of-the-box.

Play and explore it.  When ready, you can install on your hard disk.

Step 5

You can install Ubuntu along side of Windows without any problems.  The main issue is that you need to reboot and press F12  to boot from the Ubuntu partition.  Also, space on the hard disk is limited at 64 Gigs.  Windows 10 does take around 30 Gigs of it with apps...

When creating your administrator user, set auto-login, it is really useful.

My initial tests were along Windows 10.  In the end, I did chose to wipe Windows 10 completely and only have Ubuntu Budgie installed.   I now have 58 Gigs of free space ;)

So install as you you wish.  I really liked Windows 10, but being stuck with the 32 bits version was a pain.

Step 6 (Once installed)

At this step, you should be able to boot into Ubuntu.  Again, you'll have to struggle with the display orientation (see Step 4).

Connect to your WIFI and update with the latest packages.  I've also enabled the developers packages.  It seems to be a bit more stable with those.

Remember the UCM file for the sound driver?  You need to copy all the sub-folders into /usr/share/alsa/ucm folder as root.

Once done, in a console, execute pulseaudio -k

You should have audio now.

For some reason, the Pulseaudio does not detect when plugging headphones so you need to do it manually to switch from Speakers to Headphones.  Keep a shortcut on the audio settings on your desktop.

Forget about the Bluetooth headphones as the Bluetooth device does not work. (At least at the moment of writing this post)

Step 7 (Ubuntu Budgie)

The default flavor of Ubuntu does support a virtual keyboard out-of-the-box but it does not work well.  With Budgie, there is not even an on-screen keyboard popping up.  But do not fear, there is a neat fix.

Install the "OnBoard" package from the Software setup.  You can use it to popup when needed from the settings and customise it as needed.  

Conclusion

You should now have a fully working Ubuntu Tablet now.  There is a few quirks here and there.  Some 3D games does not work.  You'll need the physical keyboard to play some games and you'll be missing apps and games available on iOS/Android/Windows but it will be fun.

I use Chrome from Google as it does support the touch interface, it works with Netflix and can create Web Apps using the menu "More Tools" - "Create Shortcut"

If the freezing bug could be fixed, it would be almost perfect for a real Linux tablet.



Friday, August 18, 2017

What's new in WRoom 0.0.10?

If you did not know, I have been working on a new open source project called WRoom in the last few months.  It's a big technical experiment but it has a lot of potential at the same time.

Basically, WRoom is a new web browser where you navigate virtual rooms create using a simple text file.  It's easier than HTML/Javascript and you can create maps all over the web, linked together with Teleporters.

I have released a new version today: 0.0.10 ALPHA.  In this new version, I have integrated Texture videos and a bunch of new stuff.  Currently, the Windows version works pretty well and it kind-of work on Linux, at least on my Ubuntu Mate laptop.

Here's a demo of the latest version:


The main features of WRoom:
  • 3D Browsing à la Doom FPS game
  • Supports textures (PNG, JPG) 
  • New Video Textures using FFMPEG
  • Embedded chat room, (Simple avatars are showing other visitors) 
  • Triggered actions: Teleport, play sound, open door
  • Animated textures using multiple image files
  • Easy to create your own using a simple text editor
  • Free as in Open Source

WRoom is a new twist on creating communities online without having to learn HTML and Javascript.  A map editor is on the way to make things easier.  Maps are hosted on any web hosting plan such as Mochahost or your own web server.

Here's a simple map example:

# Set the title for the room
title=Planet Mars
# irc server
chatroom=#wroommars
server=irc.freenode.net
port=6667
# Load the textures
texture=wall03.png
texture=wall01.jpg
texture=wall03.png
floor=floor.png
ceiling=ceiling.jpg
#Load background sound file
#backgroundsound=background011.wav
# Set the map
# 15x10
map=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
map=1,0,3,3,3,3,3,3,3,3,0,0,0,0,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,3,3,3,3,3,3,3,3,3,1
map=1,0,0,0,0,0,3,0,0,3,0,3,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,3,0,0,0,0,0,0,0,0,1
map=1,3,0,3,3,0,3,0,3,0,0,0,0,0,0,0,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,0,0,3,0,3,0,3,3,3,3,3,3,0,1
map=1,3,0,3,3,0,3,0,3,0,3,3,0,3,0,3,3,3,3,0,3,3,0,3,0,0,0,0,0,3,0,3,3,3,0,3,0,3,0,0,0,0,3,0,1
map=1,3,0,0,3,0,3,0,3,0,3,3,0,3,0,0,0,0,0,0,3,3,0,3,0,3,3,3,0,3,0,3,0,0,0,3,3,3,0,3,3,0,3,0,1
map=1,3,3,3,3,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,3,3,3,3,3,0,3,0,3,3,0,0,0,0,3,3,0,3,0,1
map=1,3,0,0,0,0,3,0,3,0,0,0,3,3,3,3,3,0,0,0,0,3,3,3,0,3,3,0,0,0,0,3,0,3,3,0,3,3,3,3,3,0,3,0,1
map=1,3,0,3,3,3,0,0,3,3,3,0,3,3,3,3,0,0,3,3,0,3,0,0,0,0,3,3,0,3,0,3,0,3,3,0,0,0,0,0,3,0,3,0,1
map=1,3,0,3,3,3,0,3,3,3,3,0,3,3,3,3,0,3,3,3,0,3,0,3,3,0,3,3,3,3,0,3,0,3,3,0,3,3,3,0,3,0,0,0,1
map=1,3,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,3,0,0,0,3,0,3,0,0,0,0,0,0,0,3,3,3,3,0,3,0,3,0,3,3,0,3,1
map=1,3,3,3,3,3,0,3,3,0,3,3,0,0,0,3,3,3,0,3,3,3,0,3,0,3,3,0,3,3,3,3,0,0,0,0,3,0,3,0,3,3,0,3,1
map=1,3,0,0,0,0,0,3,3,3,3,3,0,3,0,3,0,3,0,0,0,0,0,3,0,3,3,3,3,3,3,3,0,3,3,0,3,0,3,0,3,0,0,3,1
map=1,3,0,3,0,3,0,0,0,0,3,0,0,3,0,0,0,3,3,3,3,3,0,3,3,3,0,0,0,0,0,3,0,3,0,0,3,0,3,0,3,3,0,3,1
map=1,3,0,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,3,3,0,3,0,3,0,3,3,0,3,0,0,3,3,3,1
map=1,3,0,3,0,3,3,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,3,3,3,0,3,0,3,0,3,0,3,0,3,3,0,0,3,0,0,0,3,1
map=1,3,0,3,0,3,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,3,0,3,0,3,0,3,0,0,0,0,0,3,0,3,0,3,1
map=1,3,0,3,0,0,0,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,3,3,3,3,0,3,3,0,3,0,0,1
map=1,3,0,3,3,3,0,3,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,0,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,0,3,3,0,1
map=1,3,0,3,3,3,0,3,3,3,0,3,3,0,3,0,3,0,0,0,0,0,0,0,3,0,3,0,0,3,3,0,3,0,0,0,0,0,0,0,0,3,3,0,1
map=1,3,0,3,3,3,0,3,0,0,0,0,0,0,3,0,3,0,3,3,3,3,3,3,3,0,3,0,3,3,0,0,3,0,3,3,0,3,3,3,3,3,3,3,1
map=1,3,0,0,0,3,0,3,0,3,3,3,3,3,3,0,3,0,3,0,3,3,3,3,3,0,0,0,0,0,0,3,3,3,3,3,0,3,3,0,0,0,3,3,1
map=1,3,3,3,0,3,0,3,0,3,0,0,0,0,0,0,3,0,3,0,0,0,0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,3,3,0,3,0,3,3,1
map=1,3,0,3,0,3,0,3,0,3,3,3,3,3,3,3,3,0,3,0,3,3,3,0,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,0,3,0,0,0,1
map=1,3,0,3,0,3,0,3,0,3,3,0,0,0,0,0,0,0,3,3,3,0,3,0,3,0,3,0,3,3,0,0,0,0,3,3,0,3,3,0,3,0,3,0,1
map=1,3,0,3,0,3,0,0,0,3,0,0,3,0,3,3,3,3,3,0,3,0,0,0,0,0,0,0,3,3,0,3,3,0,0,0,0,0,0,0,3,0,3,0,1
map=1,3,0,0,0,3,3,3,3,3,3,0,3,0,3,3,0,0,3,0,3,0,3,0,3,3,3,3,3,3,0,3,0,3,3,3,3,3,3,3,3,0,3,0,1
map=1,3,0,3,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,0,3,0,3,3,3,3,3,0,0,0,0,3,0,3,3,0,0,0,0,3,3,0,0,3,1
map=1,3,0,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,3,3,3,3,0,3,3,0,3,3,0,3,3,3,0,0,1
map=1,3,0,0,0,0,0,0,0,3,3,0,0,0,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,3,3,0,0,0,3,0,0,1
map=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
#Set the starting point
start=1,1
# Define the actions
# Actions are: teleport, sound, message, download
# After the action command, enter the location of the action x,y
# Then the parameter
# action=teleport,x,y,URL
# action=sound,x,y,sound.wav
# action=message,x,y,Message string...
# Actions are triggered by pressing the action key: space bar...
action=teleport,43,29,http://wroom.crombz.com/,Congrats! Back to homebase
# Load text to display on walls
# TEXT=x,y,HTML text entry... 
text=1,3,<div style='border:solid red 3px;background-color:#441111;color:#FF0000;font-size:12px;text-align:center;'>Welcome to Mars!<br>Can you find your wayback to WRoom homebase?<br>Good luck!</div>

Hope you like WRoom!

Visit the homepage at http://wroom.crombz.com

Monday, February 15, 2016

Are you having too much meetings?

You are reviewing your schedule at the office and suddenly receive an email inviting you to a meeting.  Your presence is mandatory for a full review of the current issues concerning a major client.  We've all been there, attending meetings with 30 people, wondering if your presence was actually useful.  I tend to avoid those meetings as most often, they are a waste of time and energy.

Meetings can be powerful tools when used properly.  Before planning any meeting, start by considering those questions:

1 - What is the main goal of the meeting?
2 - What should be accomplished at the end of the meeting?
3 - Who will actually and actively act on the decision taken during the meeting?

Over the years, I've followed a few simple rules to make these meetings effective and productive.  There three kinds of meetings:  Issue meetings, Follow-up meetings an Informative meetings.

Issue Meetings

These meetings are meant to find a solution to an issue.  They are often critical and can last up to 2 hours.  Only the main leader and the main resource should attend.  The idea is to find a solution as fast and as effective as possible.  Those two persons are the main actors in the situation and are those that will take direct actions to solve the issue.  

At then end of the meeting, concrete solutions and ideas should be on the table,  A short summary can then be sent to all team members using emails.  Do not send "FYI" as it does imply you are sharing the information to be polite but it does not really matter if people reads it or not.  Ask for comments and suggestions in your message, involving everyone in the process without having 98% of your resources wasting their time. 

Follow-up Meetings

A follow-up is short and sweet.  All team members are attending and a team leader is the one doing the talking.  This is not the place to find a solution or o discuss about personal goals. They are often referred to as scrums in the software industries.

Basically, the team leader is asking each member:  What have you completed, what are your working on and what issues are you facing?  In about 2-3 minutes, each member will report her/his current status and the team leader will dispatch new tasks if any decisions must be taken.

A follow-up can be executed in less than 15 minutes each morning.  This ensures that everybody is on the same page and that all team members had a chance to report any issue.  In the event that an issue has been raised, the team leader can then schedule an issue meeting for the main actors on the stated issue.  

Informative Meetings
   
An informative meetings is a big announcement.  It often last around 30 minutes and everybody is invited.  The meeting agenda is planned ahead up to the minutes and a written summary is available.  Those meetings are used as way to communicate important decisions an should not last more than 30 minutes.

Consider using other means of communications ff the main subject is a big "FYI".  Informative meetings are a more personal approach of communicating with a large group of people when the news is important.

In the end...

Anything else is a social gathering and a time waster.  A meeting is a work process that should be effective and profitable for business and for the employees.  The less people attending, the better it is.  The shorter it is, the more effective it will prove.

I always plan my meetings a bit shorter than they really are.  Assuming that I will require a full hour with another colleague, I will schedule the meeting for 30 minutes instead.  I know it's a bit short, my colleague knows it's a bit short...  This puts a bit of pressure on getting straight to the point and avoiding stories about our last week-end party.

Try it for yourself and let me know how it worked out for you and your team.


Have a nice day!

Saturday, February 28, 2015

Crombz.com is on Kickstarter!

After a week of development on Crombz.com, everything seems to be working as expected.  The only thing missing is more visitors.

Crombz does get around 50 visitors per day which is not that bad for a website that was put online just less than a week a go.

It's now time to move on to the next level by promoting Crombz.com over the web.  As personal funding is quite limited (Being a dad of 5 kids, with 4 more step-kids, you can figure out why ;) ), I've created a Kickstarter project to help me out funding the promotion of Crombz using Google Adwords.

If you wish to support Crombz, you can do it by funding the Kickstarter project (https://www.kickstarter.com/projects/patrickballeux/crombzcom).  The money raised will be used to promote and improve Crombz.com.

The idea behind Crombz is to display the newest and unknown Youtube videos and put them in the front row.  Everywhere, already popular and viral videos are listed, leaving out those little gems at the bottom of their list.  Crombz is thinking the other way around.

I hope that my latest project will take off and will help new Youtubers to be discovered.

Thanks for your support!

Patrick