Issuing modem commands to an unrooted Android device
Permalink | Author: Dan Dart | Published: 2018-07-31 19:37:00 UTC | Tags: access android connection gsm hayes linux m2msupport minicom mobile modem network networking phone port root screen serial
Did you know that Android devices expose a modem on the USB interface, even when "Tethering" is turned off? It appears like this in dmesg:
[22338.529851] cdc_acm 1-3:1.1: ttyACM0: USB ACM device
You can connect to this as a raw serial console like:
screen /dev/ttyACM0
or:
minicom -D /dev/ttyACM0
This will accept GSM modem commands prefixed with AT, and give information about the phone, and presumably allow a dialup-like interface.
Many of the examples on M2MSupport.net will work with the phone, depending on which manufacturer and capability set, presumably. With my Samsung Galaxy XCover 4, I got the GSM capability set.
Try playing around with this, but don't get charged by your provider too much for making calls you never end! Make sure you hang up properly as per the protocol.
For more on standard modem commands, see the Hayes command set article on Wikipedia.
That's all for now!
Comments
No comments yet...
Post a comment:
Retro dial-up network fun
Permalink | Author: Dan Dart | Published: 2018-07-27 00:46:00 UTC | Tags: 98 address dial-up dialup emulate emulation internet isp kernel linux modem nat network nostalgia protocol routing serial server windows
I remember those days when your computer hissed and made strange noises in order to connect to the Internet. Today, most of us look back at those days in disdain. But for some, we want to repeat the same kind of experiences that we used to, just for the pure nostalgia of it. Some of the most remembered operating systems can take us back to those days.
Windows for Workgroups 3.11 is remembered for its Terminal application and ability to use a multitude of networking technologies to connect to networks back in the day.
DOS also had limited support for networks - but this required third party software, unless one would talk directly to "COM1" as it would name the serial device.
Windows 98, although it has proper TCP/IP and Ethernet card support built in and there's therefore no need to use serial for internet when virtualising, for the most part it is remembered for its dial-up connections, since when we were using it, no one had broadband yet. But one of the best things about Windows 98 and serial is HyperTerminal! One can now connect to SynchroNet or other telnet services from Windows 98, just using HyperTerminal like dialling a phone, and possibly other things even with TLS, using socat. If you have a Windows 98 computer without ethernet, and a serial port between your host and Windows 98 computer, you can also connect to the Internet via this setup, by modifying the setup instructions to use a real serial port.
I'm not including instructions to emulate a "Lucent" win-modem because as far as I can see, qemu doesn't support these.
Although this isn't needed for dial up internet connection sharing, one can emulate a terminal with a SLIP interface too.
I'm going to explain how to pretend to be your own ISP, to old versions of Windows, and make HyperTerminal available for telnet fun, all via a virtual serial port.
To set this serial emulation up, I tried doing this through the VICE RS232 mode of tcpser, but it ultimately came up short. My VMs could use it just fine for telnetting places, but wouldn't go through pppd properly if I just socatted from its port to a pty, and made pppd listen on that pty. I think there was a protocol problem somewhere there, plus pppd kept hanging when I tried to make it listen on a TCP port - this is probably because it was trying to connect - but it is OK with a serial port. But this won't work with any old pty, it has to "look" like a serial port as well, and you can't just redirect physical serial ports using socat as if they were a file either.
The secret ingredient is to install a virtual serial port - its module is called tty0tty and it can be found here: https://github.com/freemed/tty0tty.
After installation (check the page for up to date instructions) you have access to 4 virtual serial port loops:
/dev/tnt0 <=> /dev/tnt1
/dev/tnt2 <=> /dev/tnt3
/dev/tnt4 <=> /dev/tnt5
/dev/tnt6 <=> /dev/tnt7
For use as a normal user, these should be chmod'd to 666:
sudo chmod 666 /dev/tnt\*
Anything sent to either end will be echoed on the other end, and this will act like a proper serial port, plugged in one end and the other end. For more information on this, see their GitHub repo.
Once this is set up, we can start the virtual machine. First, run qemu using the virtual serial line:
qemu-system-i386 win98.img -serial /dev/tnt0
Connect the other end to tcpser, which will emulate the phone line and allow you to dial a TCP connection.
tcpser -tsSiI -i 's0=1&k3' -s 57600 -S 57600 -l5 -d /dev/tnt1 -n 1=127.0.0.1:2323 -n 2=synchro.net -n 3=
localhost:23 -n 08450880101=localhost:2323 -n 08458457444=127.0.0.1:2323 -n "0845 845 7444"=127.0.0.1:2323 -n 0018002169575=127.
0.0.1:2323 -n 0018005433279=127.0.0.1:2323 -n 08450801000=127.0.0.1:2323
Explanation: Log everything. Set pickup to 1 ring. Set speed to 56k. Use the other end of the first serial line. Add a few example phone numbers (-n number=IP:port), (these I've used for ISP detection in Windows 98).
Listen to that TCP connection with socat and redirect it to a second virtual serial line loopback. I don't want it to die so I'll put it in a while true.
while true; do socat -s -d -d tcp-listen:2323 /dev/tnt2; done
In order to pretend to be our own ISP, we need to run pppd on the other end of that serial line. I couldn't use IP directly, this needs a serial line, and tcpser couldn't use a second interface, so we need to use socat. The IPs I'm using are within my current network. The rest of the settings are to disable authentication (for now, as I couldn't get it to work, which needs root), not fork the process so we can debug, not die if there's no call, show the debug logs, not communicate via serial (just IP), allow the connection to be seen by the LAN, adjust the forwarding parameters of the kernel appropriately and set a default DNS server of Quad9.
sudo pppd /dev/tnt3 57600 192.168.1.100:192.168.1.101 asyncmap 0 netmask 255.255.255.0 noauth silent nodetach passive persist debug local proxyarp ktune
ms-dns 9.9.9.9
If you'd like to define your own DNS mappings from your /etc/hosts, such as pretending to be the server for updates and ISP information (if you host a web server locally), add the appropriate lines to your /etc/hosts like this:
192.168.1.100 ispreferral.microsoft.com www.update.microsoft.com v4.windowsupdate.microsoft.com windowsupdate.microsoft.com ww
w.msn.com
and change ms-dns 9.9.9.9
to ms-dns 192.168.1.100
in the pppd
command, then run dnsmasq:
sudo dnsmasq -zdippp0 -2ppp0
The -z specifies only binding to ppp0 (to not interfere with other services running on port 53/udp, such as systemd-resolved), -d to not daemonise, -i ppp0 to specify the interface and -2 ppp0 to specify only DNS, not DHCP.
In any case, do the usual NAT stuff:
Allow IP forwarding...
echo 1 | sudo tee /proc/sys/net/ipv4/ip\_forward
And allow forwarding and masquerading in the firewall (replace wlp7s0 with your main interface)
sudo iptables -t nat -A POSTROUTING -o wlp7s0 -j MASQUERADE
sudo iptables -A FORWARD -i wlp7s0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i ppp0 -o wlp7s0 -j ACCEPT
...
Hooray! Connecting to phone number 1 will give us a "dial up" connection through our virtual serial line! 2 will give us a line to synchro.net for use in the Terminal or HyperTerminal application, 3 will telnet to our local system if we need that for any reason and 08450880101 is the default Windows 98 "find my ISPs" service, which I've also redirected to our "ISP" connection for good measure.
Coming next time: Can we emulate update servers and ISP information servers? Given Windows 98 only supports 128-bit SSL / TLS 1.0, I think it's time to break SSL.
Comments
No comments yet...
Post a comment:
BSD for Linux Users: An Introduction
Permalink | Author: Dan Dart | Published: 2015-03-29 14:05:00.003 UTC | Tags: bsd cddl debian dragonfly dragonflybsd free freebsd gnu licence linux netbsd open openbsd pcbsd sco unix zfs
BSD means a few things in the Open Source / Operating System world:
- The Berkeley System Distribution, a variant of UNIX that stemmed from the original AT&T UNIX, originally developed by Computer Systems Research Group (CSRG) of the University of California, Berkeley [1]
- One or many of a number of BSD distributions - a "flavour" of the original, modified by the vendor to suit the purpose of the distribution in question. Examples might be FreeBSD, NetBSD, OpenBSD and Dragonfly BSD. Note that these are not "Unix-like" as Linux is, but actually based from and including code from the original BSD - minus the code from AT&T, hence the version they are based upon is known as "4.4BSD-Lite".
- The actual kernel of one of these distributions, in the same way as Linux is the main kernel of distributions such as Ubuntu, Fedora or Mint, although there are other choices of kernel for some distributions.
- One or many BSD communities around the world to support and help develop these distributions, such as forums, help desks, etc.
- A set of permissive non-copyleft licences which said distributions and kernels are distributed under [2][3] which allow redistribution provided that the original copyright notices are left in the associated media, and pose no other restrictions other than an optional "no endorsement" clause.
Following is a summary of some of the main distributions.
FreeBSD: the most popular BSD distribution, recognised by its support for running servers and famously run on [4]
PC-BSD: touted as "user-friendly", offering an easy install process and simple package installations from self-contained packages. [5]
OpenBSD: supposedly the most secure operating system, boasting "Only two remote holes in the default install, in a heck of a long time!" [6]
NetBSD: a distribution with a small install size, a popular base and excelling at portability with "formal releases for 53 architectures [7], and has integrated ports for four others", celebrating 20 years since its foundation this year.
Dragonfly BSD: a 10-year-old (so still relatively young) distribution famous for its extremely speedy filesystems. [8]
Debian GNU/kFreeBSD [9], the Debian distribution compiled to work on top of a BSD-type kernel rather than a Linux one, which has the upshots of being able to be used on top of BSD-supported filesystems, those compatible with BSD licences (but not the GPLv2 [10] used by Linux [11]) such as ZFS [12] (edit 2021: archived) (licenced under the CDDL [13]), and all the while using the familiar GNU tools common to the Debian GNU/Linux distribution.
Next time: BSD Licences and why they are good, bad and/or certainly not ugly.
References
[1] https://en.wikipedia.org/wiki/Berkeley_Software_Distribution 4 [2] https://opensource.org/licenses/BSD-2-Clause
[3] https://opensource.org/licenses/BSD-3-Clause
[4] https://www.freebsd.org/
[5] https://www.pcbsd.org/
[6] https://openbsd.org/
[7] https://www.netbsd.org/about/portability.html
[8] https://www.dragonflybsd.org/features/
[9] https://www.debian.org/ports/kfreebsd-gnu/
[10] https://www.gnu.org/licenses/gpl-2.0.html
[11] https://www.kernel.org/doc/linux/COPYING
[12] [https://web.archive.org/web/20140908152050/http://www.freebsd.org/doc/handbook/filesystems-zfs.html] (https://web.archive.org/web/20140908152050/http://www.freebsd.org/doc/handbook/filesystems-zfs.html) (edit: archived)
[13] https://opensource.org/licenses/CDDL-1.0
Comments
No comments yet...
Post a comment:
How to use SSH for an Internet Connection Sharing Proxy
Permalink | Author: Dan Dart | Published: 2010-11-13 13:10:00 UTC | Tags: connection internet internet connection sharing linux proxy sharing ssh tunnel
I haven't made a blog in a long while, so I'd thought I'd share this, which I recently discovered how to do.
If you find the idea of proxies a bit restrictive. because after all, they have to be set up in the applications in question, and may not work for some applications, help is here. And all you need is an SSH server you can connect to. Sadly, this method requires root, but it's worth having for the system-wide Internet connection you'll get from it.
Authenticating as root
First, make sure you're root on the client machine (sudo -s or su -, depending on your distro), and that you can ssh as root to your target server. This is of course causes security implications, so it may be a good idea to generate a key pair for root-to-root access and block off passworded access for root, so that no one can bruteforce your root password.
Generate the key pair as root on the client:
And copy the key to the server
client:~# ssh-copy-id [server]
Test the root login. It should not prompt you for password authentication (unless you've set one in ssh-keygen). Now, to block off password logins, edit /etc/ssh/sshd_config (or /etc/sshd/sshd_config) on the server and make sure this line is present:
PermitRootLogin without-password
Hooray! We're now somewhat more secure!
Creating the tunnel
Now to start a tunnel. The -w switch on ssh will do what we need, and create a tunnel network interface on both computers. The first number is the number of the interface on the client, and the second is for the server. For example, 0:! will create tun0 on the client connected to tun1 on the server. You may specify auto for the next available one. Let's create tunnels called tun0 to make it simpler.
client:~# ssh -w0:0 [server]
Now, see if your tunnels were set up correctly.
server:~# ifconfig -a tun0
You should see a tun0 interface. This is a layer 3 tunneled virtual interface (point-to-point).
Set up an IP on both sides so each computer can talk to each other.
server:~# ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2
client:~# ifconfig tun0 10.0.0.2 pointopoint 10.0.0.1`
Try pinging each side to see if you have a connection.
Once each host can talk to the other, we can set up the routing.
Setting up the routing
Server setup
Ensure that the tun0 interface is not restricted:
server:~# iptables -A INPUT -i tun0 -j ACCEPT
server:~# iptables -A OUTPUT -o tun0 -j ACCEPT
server:~# iptables -A FORWARD -i tun0 -j ACCEPT
Allow packets in from the external interface to be processed by the tunnel:
server:~# iptables -A INPUT -i eth0 -d 10.0.0.2 -j ACCEPT
Allow forwarded packets to be routed to their destination:
server:~# iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT`
Set up tun0 for NAT:
server:~# iptables -A POSTROUTING -o tun0 -t nat -j MASQUERADE
Enable IP forwarding in the kernel:
server:~# echo 1 > /proc/sys/net/ipv4/ip_forward`
Client setup
Allow packets to be processed from the tun0 interface:
client:~# iptables -A INPUT -i tun0 -j ACCEPT
client:~# iptables -A OUTPUT -o tun0 -j ACCEPT
client:~# iptables -A FORWARD -i tun0 -j ACCEPT`
Setting up the gateways
Find the existing default gateway:
client:~# route | grep ^default
Add a backbone to stop the server not being found once we switch gateways:
client:~# route add [server IP] gw [existing default gateway]`
Add the new default gateway:
client:~# route add default gw 10.0.0.1
Remove the existing default gateway (Be very careful!):
client:~# route del default gw [existing default gateway]`
Testing the tunnel
Try going to whatismyip.com in your browser. It should show you the IP of your server. If you're curious, you can also check the default route to somewhere like Google by using the traceroute utility.
You're done!
Troubleshooting
I can't see a tun0 interface!
Make sure you're root on both sides. (It sounds obvious - I've thumped my head on my desk so much because of this!)
Start ssh with the -v
switch to show more verbosity. If you see a message a bit like this:
debug1: Remote: Failed to open the tunnel device.
channel 0: open failed: administratively prohibited: open failed
it could mean that someone else is trying to create a tunnel with the same interface name on the server.
If you see something a little like this:
debug1: sys_tun_open: failed to configure tunnel (mode 1): Device or resource busy
it might mean that you already have a tunnel with that interface name open. Check ifconfig -a
.
I get the message "ping: sendmsg: Operation not permitted" when testing the tunnel connection!
You didn't allow traffic to flow between the tunnel and local network device. Try turning the client firewall off.
The connection is slow!
There will be significant overhead as all the traffic is encapsulated into SSH and encrypted. You will also see latencies go up as traffic needs to travel from your client to your server and back additionally.
Xenon Web Desktop Alpha2 Released
Permalink | Author: Dan Dart | Published: 2010-02-01 22:17:00 UTC | Tags: blog cool desktop email linux mysql operating system php web xenon
The web desktop Xenon released version Alpha2 today. The release announcement from the website reads:
"Changes from Alpha include many security fixes (including SQL injection), the addition of the Chatroom app, Pictures app, width autoscaling, new tab launching, easier installation and various visual tweaks.
Please either use the https://web.archive.org/web/20100107134808/https://xenon.kevinghadyani.com/ (edit 2021: archived), or ddownload to your server at xenon.kevinghadyani.com/xenon_alpha2.tar.bz2 (edit 2021: not archived). Please help by submitting bugs, patches, new apps, icons, etc to xenon@dandart.co.uk. Thank you."
Xenon is a web desktop, which means that all your applications, work and settings are stored on the web. It can be run from any Internet-connected computer by browsing to the Xenon server or from your own server (in the case that you want a private instance, or want it installed into a netbook in the case where you do not have Internet connectivity). Eventually syncing support will be brought in which allows you to sync your settings and files to and from your local instance and the main server. Other features currently available include:
- Audio player (featuring HTML5 Vorbis audio)
- Video player (featuring HTML5 Theora video)
- Picture viewer
- Email (including within Xenon and outgoing email)
- Blog
- Chatroom (Public, open to all on the same instance)
- Notes application
- Friends application for social features
- My Files, to upload various types of file
- Wallpaper switcher
Upcoming features include:
- Settings syncing and importing
- A small footprint netbook/touchbook operating system to run on
- Many others
To try the system out for yourself, you can try the demo (edit 2021: archived) or download the software at xenon.kevinghadyani.com/xenon_alpha2.tar.bz2 (edit 2021: not archived) to your server.
Please send patches, icons, ideas, apps, et al to xenon@dandart.co.uk
The project's website is at https://xenon.kevinghadyani.com (edit 2021: archived) or a shorter version: https://hackerlanes.com (edit 2021: archived)
Comments
No comments yet...
Post a comment:
Linux's Hardware Support
Permalink | Author: Dan Dart | Published: 2010-01-24 14:52:00 UTC | Tags: 64 bit core hardware i7 intel linux opensuse support ubuntu usb windows
Lately, I've been hearing a lot about "Linux needs to master .... to beat Windows". I'll now show you how that's completely false, and how it already has beaten it, by talking about hardware support.
Linux has been proved to have the best hardware support around - see this interview (edit 2021: archived) with Greg KH who's a kernel dev to see in-depth information. Linux had most support for hardware first, including: * 64 bit * USB 3.0 * Core i7
And many more. Conversely, it's easy to install the hardware on Linux. In windows for instance, half the time your hardware doesn't work because you downloaded a dodgy driver, or you have to install it off a CD, or it could even be the case that it bluescreens because the driver hasn't been verified by whoever. Fair enough, that hardly ever happens anymore.
The misconception that a lot of hardware doesn't work on Linux isn't because it doesn't, it does, but because quite often your distribution of choice doesn't ship with the correct userspace tools - e.g. a webcam viewer, a scanning program, an iPod syncer. It's not the actual Linux kernel that's at fault here, it's that the distribution vendors don't include software to manage and access your device. What we need here is a project that either includes everything or says "I see you've inserted a scanner, but you don't have a scanning application. Want me to install one for you?". I have seen openSUSE do this for me before, but Ubuntu sadly lacks this capability, which is the distro that most users allegedly use, so it needs it here.
The fact of the matter is, every piece of hardware I've put into my Linux box has been detected and set up by Linux, but I have had to install a webcam viewer, scanning application and TV viewer. Perhaps it's time for userspace tools to improve themselves and be as good as the kernel.
Comments
Daniel H (URL) said on 2010-02-11T20:05:21.926Z:I think Linux has excellent hardware support, especially for older obscure hardware. The only place lacking these days are where enormous work are being done already, OSS 3d graphics drivers.
It was a long time since i had hardware that didnt work in Linux. The situation can ofcourse improve with even better automagic but i dont think its any big problem nowadays.
Dan Dart (URL) said on 2010-02-01T22:40:42.24Z:Thanks there. So it's not just userspace tools we're looking for, it's also the proper abstraction libraries we need to interface in between as well.
I suggest that any time where you have had any problems, submit a bug report in the abstraction or library project, and if you can, help out!
Cheers
i80and (URL) said on 2010-01-24T16:03:26.387Z:Good post, and I largely agree with it. Linux has a bad reputation here, mostly undeserved. A stupendous effort has been put into making Linux drivers rule, and to a large degree it's succeeded. But we can't rest easy quite yet; it's not yet a solved problem, thanks to a bunch of tricky DVB cards, oddball sound cards (ALSA lags in driver development), and some graphics cards (Intel Poulsbo comes to mind). I wouldn't mind libmtp supporting my Samsung U5 OGG player either for that matter.
Aaron Toponce (URL) said on 2010-01-24T15:14:29.879Z:Linux has fabulous hardware detection, and even drivers to boot. The problem users complain about isn't a certain piece of hardware working, it's the application talking to that hardware, such as Ekiga talking to a certain brand of HP webcam. It's far too hit and miss, which is why it's not picking up more steam in the desktop arena.
Post a comment:
Xenon Alpha released!
Permalink | Author: Dan Dart | Published: 2009-12-29 13:20:00.001 UTC | Tags: ajax api apps cloud css desktop fast gui html html5 javascript linux networking operating system os php social sql xenon
An alpha version of the Xenon Desktop has been released. A description of the project follows.
Xenon is a portable web or browser based desktop for netbooks and thin clients, designed to be the easiest desktop ever.
The desktop includes a new GUI stepping away from traditional menus and is optimised for touchscreen and small devices.
The system integrates social networking features and standard desktop features into one software package.
Being browser-based, it is cross platform and cross architecture. It is built on HTML5 and PHP components, and can be run on extremely low-powered machines, allowing for cheap distribution and devices.
The backend can be run online (for users to access their data everywhere), on a personal LAN server, or on a small device, so the system can work offline, or if there are concerns about cloud storage.
An API is available at xenon.kevinghadyani.com/wiki/index.php/Developing_Apps (edit 2021: page not archived), so anyone can start developing apps to distribute in Xenon's upcoming App Store.
The project's homepage is located at https://hackerlanes.com (edit 2021: archived) including the online desktop, ready for instant testing and a download of the alpha image for your server. The actual small footprint OS that will run on netbooks will come later.
We encourage contributions to the project, in the form of code (the languages currently used are (X)HTML, CSS, Javascript, PHP and MySQL), art (eg icons, backgrounds, GUI concepts) or even just ideas.
To send any requests or contributions, or to join the project, please email the head developer at dan.dart@googlemail.com. Thank you!
Comments
No comments yet...
Post a comment:
Sync iPhone/iPod Touch 3G in Ubuntu
Permalink | Author: Dan Dart | Published: 2009-11-29 03:47:00 UTC | Tags: ipod itunes linux ubuntu
A lot of people have been trying very hard to get iPhone and iPod Touch syncing to work correctly in Linux. Some have been doing a FUSE filesystem (which accesses the iPod) and some the database and syncing. Remember this is pre-alpha quality, but I found it synced my tunes nicely from Linux. But due to the database version being old (but quite good enough for the iPod), iTunes does not play nice with it - and will just resync the tracks and may delete them. Also the iPod must have been previosly initialised with a version of iTunes. If you cannot acquire it, or it will not run, contact teuf on #gtkpod in irc.freenode.net. You have been warned!
Mounting support
First, grab iFuse: Add the following lines to /etc/apt/sources.list as root:
deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu intrepid main deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu intrepid main
Then do:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com F0876AC9 sudo apt-get update sudo apt-get install ifuse ifuse-dev
This should install support for reading and writing files. Create a mount point:
sudo mkdir /media/ipodt/
Add yourself to the fuse group:
sudo useradd -G fuse [your_user_name]
To allow normal users to mount the FUSE filesystems, edit /etc/fuse.conf and uncomment the line (remove the hash from the start of it):
\#user_allow_other
Log out and back in again, or spawn a new login shell. Mount the FUSE filesystem:
ifuse /media/ipodt
You should see that your iPod should be mounted as yourself. You should be able to find the tracks and play them from the computer. They are oddly named and located in iTunes_Control/Music .
Syncing support
To properly sync music (well I say properly), you need to install a special branch of libgpod. You'll need to get it from git. WARNING! THIS WILL OVERWRITE YOUR EXISTING LIBGPOD! Be careful. First install development libraries:
sudo apt-get install git-core build-essential cmake autoconf automake libtool intltool gtk-doc-tools libsqlite3-dev zlib1g-dev
Get teuf's sandbox repository branch:
git clone git://gitorious.org/~teuf/libgpod/teuf-sandbox.git cd teuf-sandbox git checkout origin/iphone30 CFLAGS="-g -O0" sh autogen.sh --prefix=/usr make sudo make install
libgpod should now be installed, if all goes to plan. Create control directories and files:
mkdir /media/ipodt/iTunes_Control/Device
Get the uuid of your device:
lsusb -v | grep -i iSerial
It should be the one that's 40 characters long. From the same teuf-sandbox directory, run:
tools/ipod-read-sysinfo-extended /media/ipodt
Check that a file exists. Do:
cat /media/ipodt/iTunes_Control/Device/SysInfoExtended
This should spew XML at you. Now, install your syncing program of choice. I chose gtkpod because it works for me.
sudo apt-get instal gtkpod
The program should pick up the device and ask which model it is. There should be your device listed at the bottom (you may have to scroll). Choose it and let it do its thing, and initialise your iPod. Check a file has been created:
ls /media/ipodt/iTunes_Control/Device
If you get nothing, there's a problem. Go ask teuf. If you get that filename returned. all is well. You are able to sync, save files and update the database. Bear in mind that it saves an older version of the database, so if you go to iTunes and back, it will update tracks and the database, but they should still be readable in Linux.
I hope this has been helpful to you!
Here are some helpful references if you get stuck: iFuse (edit 2021: archived, also moved project to https://libimobiledevice.org/) iPod Syncing
Comments
Unknown (URL) said on 2010-07-11T07:20:13.466Z:Hello, i am glad to read the whole content of this blog and am very excited and happy to say that the webmaster has done a very good job here to put all the information content and information at one place.
Post a comment:
Best Security Practices For Your Personal Computer
Permalink | Author: Dan Dart | Published: 2009-11-11 00:51:00.001 UTC | Tags: anti avast firewall linux live password rootkit trojan virus vista windows worm xp
Many of you may be worried or concerned about the security of your computer. With threats of viruses, spyware, bank details being stolen, accounts cracked and vulnerabilities everywhere, it is natural to be paranoid.
Here are some top security practices:
- Change your passwords. All of them. Yes, really. It does make a lot of difference to the chances of a cracker being able to track you, monitor you or pretend to be you and not. Normally people advise you change all your passwords every 2 weeks. However don't write them down, and make them long and memorable using capital letters, numbers and symbols.
Also, try not to make your password a dictionary word, or even close to it. Make it look like random garbage. You can use mnemonics to help you remember them. Consider the following sentence:
"Do as I say, not as I do!"
This can help you remember and formulate the password: DaIs,naId! You could add numbers, or convert some letters to numbers, etc: Da15,naId!
Being 10 characters long, this is a medium strength password. Try to make a sentence about 14+ letters long for strong security, but remember nothing is unbreakable!
Install security software. A lot of users might think here: "I have a firewall. why do I need this?". The answer is simple: Just because you can stop things coming into your computer and going out, it doesn't make it invulnerable to threats such as downloaded malicious files or bad web pages. I recommend Windows users install Avast Antivirus for free. Linux users should install rootkit checkers, such as rkhunter and chkrootkit.
Update your system regularly. This is one of the worst things you can leave out. If you do not update every single piece of your system, using update managers and such, vulnerabilities may be discovered in older versions of your software. Once you have a vulnerability, anything you could do (e.g. visiting a web site, opening a PDF) might give intruders access to your system. So remember to patch, and turn automatic updates ON!
Install a firewall. You may have one already, but some dismiss them. Make sure they're turned on! If you have Windows turn Windows Firewall on, and make sure there are little to no exceptons (aside from the things that you REALLY need). On Linux you can alter iptables via a GUI like Firestarter if you wish.
Change your browser. If you use Internet Explorer, you might do better to switch. It is well known for being particularly vulnerable to attack. There have been more security holes in Internet Explorer than any other browser, and they have been more slowly patched as well. Firefox and Google Chrome are good alternatives. Check Secunia and SecurityFocus for more details. There is also a table of known vulnerabilities in the latest versions of many browsers on Wikipedia.
Start over While many things may get in the way, you have tried your best to rid your computer of viruses, but there is a good chance that the viruses you have obtained have not been removed, as they may be too new for the database, or are too malicious. (Remember the stories about Conficker, the massive Windows malware, that you couldn't remove with antivirus?). If all else fails, the best way to remove any threats is to wipe your disk completely. Do a complete reinstall. There are many tutorials available, just google for them, or follow the guides for Windows XP (edit 2021: archived) and Windows Vista (edit 2025: archived). If you have a recovery disk that came with your computer, then use this instead. In any case, remember to back up!
Back up your sensitive data. Anything you do not wish an intruder to get at would be best removed or moved to portable storage. Encrypted is best!
NEVER save bank/paypal details to your computer! If an intruder gets in, they can recover your passwords (regardless of whether they're locked out) and recover your bank details. Ouch.
If you have to do banking, do it on a Linux Live CD As this Washington Post article says, you can avoid the risk of Windows malware, spyware, trojans, viruses, etc completely if you use a Linux Live CD to bank online with. I would recommend you download Ubuntu and burn it to a CD-R using DeepBurner (using Burn ISO to disk option) or CD recording software of your choice, then boot from it. Here's how:
Reboot your computer. If you see the Ubuntu boot screen, then select your language and press Enter at the next prompt. If you don't, see if there is a message to press a button to select boot device. Press it and select the CD or DVD device. If there is no message, find the message that says to press a button to enter SETUP. From there navigate to Boot devices and put priority on your CD/DVD device (method may vary). Finally save changes and exit.
- Install Linux alongside Windows. If you like the CD, you can install it permanently so that you can install more software, by selecting the Install option on the desktop of Ubuntu, making sure to resize the Windows partition to whatever size you need. (Don't panic if resizing takes ages!)
I hope that this has helped you become more secure. Please comment if you have any suggestions or things I may have left out.
Comments
No comments yet...
Post a comment:
Xenon Project looking for helpers!
Permalink | Author: Dan Dart | Published: 2009-10-14 14:17:00 UTC | Tags: css design hardware html internet javascript linux mysql php project software sql web windows xenon xhtml
I started a project some time ago, which is for now called "Codename: Project Xenon".
Xenon is a browser-based GUI designed to be implemented on netbooks. The difference between other netbook OSes and cloud systems is that not only can you test it online, it will also be installed on netbooks - which will update from the Web automatically, giving you updates, and ability to use it without being connected to the Internet due to a local web server instance.
It will have a very small footprint - being built on very few programs, and so will run on very low-end systems, so it will bring life to your old computers as well.
We are now looking for helpers to make this project a reality. If you are a designer or a programmer who can program using any combination of (X)HTML, CSS, JavaScript, PHP or MySQL, then we would like you to help us out. We are afraid pay is out of the question at the moment, until we start selling subscriptions to the web service, the budget is zero.
If you have any ideas to help the project along, then please give us feedback!
To apply, simply email: dan.dart@googlemail.com
To visit the main website of the project, click here: https://web.archive.org/web/20100107134808/http://xenon.kevinghadyani.com/ (edit 2021: archived) To try out the web based desktop for yourself, click here: Try The Desktop (edit 2021: archived partially). Please note that it is nowhere near finished at the moment. To view the SDK and programming procedures to help you, click here: Xenon SDK at xenon.kevinghadyani.com/wiki/index.php/Developing_Apps (edit 2021: not archived)
Thank you, and have a good day!
Comments
No comments yet...
Post a comment:
Linux Myths Debunked
Permalink | Author: Dan Dart | Published: 2009-09-20 09:33:00 UTC | Tags: debunked linux myths operating system security trojan virus windows
- "You can't run games on Linux.". This is one that annoys me. People claim that Linux does not provide the necessary gaming requirememnts. But look:
There is a list of Linux games at s//icculus.org/lgfaq/gamelist.php which includes many famous and popular games such as Enemy Territory: Quake Wars, Quake 4 and the Unreal Tournament series. These have either been ported from the originals by independent game companies or originally programmed for Linux (as well as many other operating systems). They often run faster on Linux than Windows as the old ETQW system requirements page showed (required 2.8GHz for Windows, 2.0GHz for Linux). For games that are not supported on Linux, there are API layers (NOT emulators) for Linux that can run Windows programs, often faster than Windows can, due to memory usage. Examples are Wine (free libre/gratis), Cedega (subscription) and CrossOver (subscription). I have successfully run many Valve games on Linux such as Half-Life 2, and many mods of it, using the Windows version of Steam under Wine, and they ran great. Also check out https://en.wikipedia.org/wiki/List_of_open_source_video_games for many more cross platform free games.
"Linux has bad security". Anyone who knows security will surely agree with me here. It is in fact widely known that Windows has viruses, trojans, worms, malware and various spyware available for it. The makers of these programs assume you have Windows (as the majority of desktop users have at the moment). New malware is being made all the time and if you get a virus, you will likely not know about it until it has done its damage (unless it's quite old, in which case your virus checker will pick it up). Malware has been made for Linux but most past attempts at it have failed. https://en.wikipedia.org/wiki/Linux_malware Linux was originally designed for multiple users from the ground up, in contrast to Windows' 1-user original setup. This could factor in too. The password hashes used by Linux can be Blowfish or MD5. These are known strong algorithms, and they are protected by a "salt" to protect against "rainbow table" password cracking. Unfortunately, Windows uses a hash called "NTLM", NT Lan Manager. These hashes don't have salts, and your password is split into 7 digit segments before being hashed. See https://en.wikipedia.org/wiki/LM_hash . These keys are significantly easier to crack and don't require much time if necessary rainbow tables have been installed. In the times of Windows XP, no password was set by default for the main user or administrator, Though this has been fixed now, this was a huge security risk. Exploits in Linux and Windows have been widespread, but Windows has had many more serious ones. In fact in 2008, a Windows server could be compromised by attacking the SMB service in an attack called "ms08_067_netapi". This can gain System user level access to the system. Linux kernel exploits have indeed been found but have been patched significantly quicker (as open source usually is, as there are many more developers), and cannot be exploited from the outside. One more reason why Windows computers happen to be less secure is that the users running the system do not know much about security (they are less educated) and as the system is often not tightly locked down enough.
"Linux is hard to use". This is a complete joke in my eyes. I recommend Linux Mint at www.linuxmint.com to anyone to try it. You will find that most if not all of your hardware is auto detected (Windows does not have this, it needs drivers, and the only reason it works for you is that they have been prepackaged along with your computer), and it's simple. To install software all one needs to do is to go to the Install Software or Package Manager button in the menu and search for software. Repositories like this have been checked for malware so there is a very slim chance user programs will do harm. Ubuntu and Mint are world renound for their ease of use, and that means there is no reason not to check them out!
"Linux won't play my media/DVD/etc" It is likely that your distribution does not come with necessary media codecs (for legal reasons). That is why I recommend Mint (to anyone in a country where the software is legal, get the Main edition). This includes software to play DVDs and almost all media formats. Though it is not hard to install it in Ubuntu, the media players prompt you to choose a codec and install it!
"Linux is all command line". Proof enough is this picture:

Comments
Jake (URL) said on 2013-01-16T03:16:15.07Z:Thanks for defending Linux. You forgot to mention only that Internet wouldn't probably exist by now if it wasn't for linux servers (used most of all by Microsoft sites). Windows security is so "strong" that most self respecting ISPs operates from behind a linux servers.
Post a comment:
Linux is not ready for the mainstream
Permalink | Author: Dan Dart | Published: 2009-09-14 22:40:00 UTC | Tags: device linux new public standardisation xenon
Caught your eye?
The reason I say this is not that Linux isn't quality - of course it is. It's not that Linux isn't ready to be used by the mainstream - it is.
The problem here is that Linux doesn't want to be for the mainstream. A wide variety of developers exist, and quite a few don't wish there to be a standard. To me, a standard is what defines a product to market. But the main idea of Linux is to be free, not in the traditional cost-less sense (gratis) but in a freedom sort of way (libre). This means that people are free to do what they wish with it, and to keep it free if distributing it.
To really make it, a product should be the same on all sides, easy to use, and have a common way of working. With the ridiculous amount of desktop environments (KDE...GNOME, etc) and text editors, this standardisation idea has become a laughing stock in the face of freedom. People want different things, they work in different ways. Some will want DEB, some will want RPM. That is why there will always be a million and one different flavours of Linux. And that is why marketing Linux is always going to be difficult. Open source is all well and good (Look how well Firefox did) but only in small, controlled packages such as these. If you let rip an OS designed to be free, then freedom will come, and you will not get one marketable product.
That is why, sadly, while the individual people who use Linux may like it, but Linux is simply too free to be for the mainstream.
To try to solve this, an ongoing project to create a standard easy-to-use small whole system, primarily for new small less-powerful devices, merging the gap between your computer and the cloud is encouraging developers to come and join. It is called Xenon, and is located at https://web.archive.org/web/20100107134808/http://xenon.kevinghadyani.com/ (edit 2021: archived). And it has absolutely nothing to do with Linux.
Comments
Dan Dart (URL) said on 2009-09-15T21:10:17.69Z:@Harley - the problem is that packaged files from one distro don't fit another. Plus one might use a different C library, and package different libraries by default, and would not be the same to use. This would slow down proprietary game/app development severely.
Harley (URL) said on 2009-09-15T15:11:57.488Z:First of all, there is a standardized base for Linux, it's call the LSB. Second, (though not completely Linux related) you say that something as large as an OS can't have a standard "marketable" entity. Well look at Open/Net/FreeBSDs. Each is a marketable OS, and each of these OS's are quite standard. Of course, how is this really any different than saying Ubuntu is a complete and standard Linux OS, or OpenSUSE, or Fedora, or etc. While they're obviously not 100% compatible with each other, with some care, binaries (because that's what this boils down to right? Binary packages from some company that doesn't release the source. Because if the source was available it's a non-issue) can be distributed across all Linux distros. So I honestly don't see your point.
Post a comment:
How to Conquer the Desktop
Permalink | Author: Dan Dart | Published: 2009-08-19 19:28:00.001 UTC | Tags: advertising change command line gui hardware linux naming packages standard windows
What does Sturmbahnfahrer mean? And who would have guessed the meaning of Stormbaan Coureur? They are different names for the same software: "a simulated obstacle course for automobiles".
Now grab someone off the street and ask them what Linux means. No? A "command-line" operating system is all you'll get from a lot of people. Most people who have used Linux before the year 2000 have had some sort of problem, due to usability, and it has put them off.
Now, ask them what Windows means. Sure, it's an English word and English is fast becoming the language of choice. It has two meanings: "A piece of glass" or "What my computer always says first". People don't know anything about operating systems. What your computer has is what it will have forever, is most people's opinion.
To change systems then is a frightening step to many and many won't be clever enough to understand the concept that something will "exist outside of Windows".
Wubi meanwhile (a program to install Ubuntu "inside" Windows) will just confuse people even more. If they understand Ubuntu is another program, they won't get why they can't just use their own programs.
People don't care about how free or open their system is. They'll buy Windows 7 because they'll probably hate Vista or be forced into it. We had a little legroom while Vista was out since Windows users started looking around for something different.
The thing is, people fear change. They won't move away from what they're used to even if it is fundamentally broken or flawed or just keeps crashing. The only way to wrench people away is to add more small Linux-based devices to the market. Netbooks are doing pretty well in this area. Due to people not recognising it as a computer (or a laptop) people will be more open to what is on it. The same happened with the iPhone. The software is different, yes, but the hardware is also different, so people feel that they can accept it.
To change people with an open mind (a lot of users are switching already) we need to follow these steps:
- STANDARDISE!! This is the most confusing aspect. Have ONE standard distro, call it something cool and DON'T mention Linux. Have ONE standard Desktop Environment. Everyone knows how to use it, it's all the same.
- Have ONE Package manager. That means ONE way of installing. It won't break if more people work on it. Have packages downloadable in a format inclusive of all the libraries. Also have an add and remove panel. Repositories are cool. They have made our software secure. Let's have ONE repository containing only GUI end user applications, named after their use (Image Editor not GIMP) and have essential packages built into the system. No library packages, no dependencies, Just download Image Editor and it works. Perhaps like Acorn or Mac OS, in which you drag and drop the program to your desktop and it works. If duplicate libraries from packages exist, keep the newer. If packages break, the library has dropped support for something, so don't drop it! If a console app exists now, make a standard frontend for configuring it. E.g. Web server package (inAdvanced section) installs Apache AND a STANDARD frontend, All its libraries are there in the package. One package file to install for Web server. One to install for File Server. And so on.
- Standard packages. Have ONE text editor. If it lacks features from others, add them. Have a beginner and advanced mode. Etc. Call them "Text Editor" not "nano" or "kate" or "gedit". What the hell are those?
- Advertising. Advertise like you've never advertise before! PRODUCT! And why you should buy it! It's cool! Let's all get on this.
- STABLE! If things can break, fix them BEFORE releasing. Ubuntu releases broken products (look at 8.10). Debian delays but releases when finished.
- HARDWARE! My brother's iPod Nano doesn't work in Linux straight away. This is one thing that will leave people ditching Linux. My 3D games I downloaded don't work. I don't want to have to bother with nVidia drivers. My camera doesn't get picked up. I can't sync to my MTP media player out of the box. Etc.
- No Command Line. No one should EVER have to type anything into a console. It's simple user-friendliness.
Let's all work on this and soon we'll have a user friendly system, easy to use, ready for the enterprise.
There is an ongoing project to conquer this challenge. Its codename is Xenon and it tries to do all this in the browser. It can be used on all devices and will be installed on small devices. To catch up with development or contribute, please visit: https://web.archive.org/web/20100107134808/http://xenon.kevinghadyani.com/ (edit 2021: archived)
Comments
Dan Dart (URL) said on 2009-08-21T15:06:23.882Z:@Luka I'm redoing all the programs in my web desktop to be easier and have the best advanced mode features, that is, the best bits from each. And not have emacs or vi or any existing program.
Unknown (URL) said on 2009-08-21T15:02:29.235Z:No, You haven't invented OSX, You've invented Android. Problem with your approach is Emax vs Vim problem. Not everyone will agree what should be the "one" program, nor should they. Diversity is what makes progress happened. Of course, not everyone likes to cope with it, so there is always room for making it simpler for those people.
Dan Dart (URL) said on 2009-08-19T20:46:12.811Z:@P. Static Ooh, noo.. Linux is the LAST thing I'd call it. I want to move away from that. It confuses and irritates people.
Haha, OSX. Well.. I guess, but less DRM encumbered and prettier. And portable. And way more different reasons.
P. Static (URL) said on 2009-08-19T19:50:43.519Z:Congratulations, you just invented OS X. :)
On a more serious note, I really believe that the kind of standardization you're talking about is fundamentally incompatible with what Linux is. It would require some kind of centralized control, like OS X has Apple, and Windows has Microsoft. One of the core philosophies of Linux has always been letting a bunch of coders do their own thing, and watching what happens.
Sure, you /could/ create an operating system based on Linux, all standardized and uniform and user-friendly and easy to understand, but do the rest of us a favor: don't confuse people by calling it Linux.
Post a comment:
What Free Software needs
Permalink | Author: Dan Dart | Published: 2009-07-05 13:21:00 UTC | Tags: bsd. competition free linux packages standardisation windows
When I was young, I remember wanting SUSE 9.2 Professional. It seemed like a good stable system with many good reviews. Afterwards (luckily) the distribution switched to GPL and I managed to acquire a copy of 9.3. It was very good for its time, its acheivements vastly outstepping anything I had previously seen. With instant search, good photo management, and all the rest, it seemed to be a good stepping stone onto which further development could be put upon.
A while later, I find that "cool" features seem to be getting less and less common. With the advent of Compiz a few years ago, coolness in the desktop rose a little, but with less common other features, and small incremental updates in most distributions, computing was getting a little more boring, with little to wow about. We now need a good jump up, or proprietary software will catch up. KDE 4 recently has been a downfall, mainly because people disliked it from being so very different to the very stable and mature 3.5 series, which I was in fact excited about at the time. When the "broken" Microsoft Vista followed after KDE 4's (premature) release, people managed to give Vista bad hype for being so out of step with current needs that it would not run software that ran on previous releases flawlessly. Between now and then, KDE 4 and Vista have largely sorted out their concerns. Ever since Vista SP1 and KDE 4.2, I think a lot more people are happy with either release. But many people still dislike this new "dark" theme over the previous light theme, and as such prefer to stick to the "dead" XP or the less-supported KDE 3.5.
Other problems we in the Free Software community face are:
Lack of standardisation. Yes, as much as I hate to say it, standard ways of doing things are waning. Especially in the Linux community, 500 different distributions are not a good way of doing things. Factoring out the "useless" distributions, based on whether they have been done before, how useful a distribution is, whether the same effect could be copied painlessly in another distribution, I think maybe 50 might remain.
Lack of standard package formats. As much as I still hate to say it, all Linux distros need one defining package format. Right now it is considered too difficult to develop for Linux, as there are so many formats to develop for. DEB, RPM, RUN, Autopackage, TAR.GZ, TGZ, and others make it difficult to develop for. I think we need a standardised package format and standard repositories that all distros can pull from. Having different ones means that it is currently difficult and long-winded to document how to install software on all current distributions. Here is what I think we need:
One format. One format, one download link for Linux, one way of packaging. Easy, simple.
One repository. One website serving download links for every conceivable package, in an installable static format (including every library it requires) or dynamic (for short downloads).
Every application. There are far too many repositories. There are in excess of 50 for Ubuntu and openSUSE. Why can't they just all be in the same place? Of course, to keep freedom-lovers happy, split it into free and non-free but essentially it's easier to get what you want now.
Every proprietary game or application maker can now package their game or application into ONE single format, upload it to ONE server (if necessary) or ONE CD/DVD/USB, and allow use or play to EVERY free software user.
Standard Libraries. GNOME and KDE are in pretty much fair competition. I cannot dispute or argue against it. Choice is paramount, but applications that don't work are unacceptable. If there were a library that could be used to create desktop applications that would run fairly on each, and not look foreign on one or the other, then it should be developed upon by everyone trying to provide a fair experience. People don't always have the libraries that are needed by some obscure piece of software, so they should be readily available, or the application should use something more common.
Backward/Forward Compatibility. Proprietary module or "driver" creation is impossible in Linux. If a hardware manufacturer wishes to hide the functionality of their driver, they cannot release binary-only drivers in Linux currently. I know that manufacturers should be encouraged to develop freely, but if there is no chance of this, there is no chance of that hardware working on Linux. The license makes it difficult but I believe that if a manufacturer provides one of those "Driver CDs" in that standard package format above with Module Versioning support on in the kernel, drivers do not have to wear out.
The kernel seems to not like modules from a past or future kernel, mainly because it is not at all stable, but also because Module Versioning does not work by default in most distros by default. Looking at Windows, applications and drivers from a number of years ago will work in today's release, and (in general) releases before the release of the application or driver. We need this back-forward compatibility for proprietary software vendors (who can't be convinced to switch to free) not to have to either release their code or keep compiling their code for each kernel or new release.
A hopeful fix I'm in the process of creating a browser-based desktop environment that will hopefully overcome all that, and allow for major cool features as well as ultra compatibility and ease of use for new users. It isn't Linux, or anything to do with current free software but it can lie on top of Linux/Solaris/BSD/Windows/Mac/whatever if the user so wishes.
https://web.archive.org/web/20100107134808/http://xenon.kevinghadyani.com/ (edit 2021: archived)
Comments
Dan Dart (URL) said on 2009-07-06T01:07:54.836Z:@xenom Distros do different things but maybe if we had stable, testing, etc repos for enabling?
@P. Static Oh no, mine is doing way more than fixing these problems. I'd love current distros to overcome this and standardise with each other. Otherwise, maybe a "1-click install" for new repos and packages is in order, which integrates with their package manager, whatever it may be.
P. Static (URL) said on 2009-07-05T16:24:15.792Z:so, the problem is that there are too many distros doing things too many different ways, and your solution is... to make a new, completely different distro? ;)
Unknown (URL) said on 2009-07-05T15:02:00.026Z:The package system problem come only with propriary software, with FOSS, the package are the problem of package maintainer of the different distributions. The one format is not a real problem for devellopers. If they want to make a package for distribution it is their problems, else it is the package maintener's problem. One repository for all distribution is not technically possible, because distribution have different package update system and motivation, many just take stable version (like Debian Stable) and other are bleeding-edge and rolling-release (like ArchLinux) and this is really good, I don't imagine using Debian on my personnal computer and ArchLinux on company server. I also think on different compilation options.
The lack of standard librairies is a problem, but not a big problem, we can easily have 2 ou 3 different librairies without problems.
Post a comment:
Sun is dead?
Permalink | Author: Dan Dart | Published: 2008-09-25 14:49:00 UTC | Tags: bsd. competition jim kernel linux market share solaris sun unix zemlin
Sun Microsystems have recently suffered a downfall. According to Linux Foundation's Jim Zemlin, there is no room in tomorrow's market for Solaris. I, however, think different.
For today's and tomorrow's market to succeed, we need to adopt as many open competing markets as possible. For competition creates innovation, and innovation is what we want.
This should be open and free for first and foremost speed reasons. Having free software encourages bugfixing to be very rapid. It allows us to modify the software as we please to make it ours and use it as we wish. Proprietary software simply does not allow this.
For an open world to succeed we need open software and communications. For this, I see Linux, the BSDs, Sun, and all the other free kernels to be competing against each other, and without proprietary software, no one is evil. Microsoft is too proprietary for the future of computing, so we should all embrace freedom strongly for it is the "smart" thing to do.
Comments
No comments yet...
Post a comment: