Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums



(Advanced Search)

Forum Statistics
» Members: 28,536
» Latest member: cinnabarwinner
» Forum threads: 15,853
» Forum posts: 115,348

Full Statistics

Latest Threads
Ethical sourcing practice...
Forum: General
Last Post: cinnabarwinner
Yesterday, 07:19 PM
» Replies: 2
» Views: 371
FIXED-Newer ver of EC25 M...
Forum: PinePhone Hardware
Last Post: DarciFoxe
Yesterday, 02:08 PM
» Replies: 3
» Views: 252
Star64: GPU firmware load...
Forum: Getting Started
Last Post: Marco2024
Yesterday, 02:49 AM
» Replies: 14
» Views: 6,585
Troubleshooting Pinedio L...
Forum: PinePhone Accessories
Last Post: lavabrilliant
09-29-2024, 09:17 PM
» Replies: 2
» Views: 490
No HDMI Video - Anything ...
Forum: General Discussion on ROCKPRO64
Last Post: KC9UDX
09-29-2024, 06:54 PM
» Replies: 2
» Views: 91
Pinetab 2 Not Powering On...
Forum: General
Last Post: tllim
09-29-2024, 12:25 PM
» Replies: 3
» Views: 196
Some Suspense.... Camerra...
Forum: Mobian on PinePhone
Last Post: biketool
09-28-2024, 10:32 PM
» Replies: 3
» Views: 124
Attempting to install Voi...
Forum: Linux on Pinebook Pro
Last Post: throwawayforvoid
09-28-2024, 09:23 AM
» Replies: 1
» Views: 907
July 1 upgrade of Mobian ...
Forum: PinePhone Pro Software
Last Post: mburns
09-26-2024, 09:56 AM
» Replies: 3
» Views: 777
desktop and lockscreen
Forum: Mobian on PinePhone
Last Post: biketool
09-25-2024, 05:11 AM
» Replies: 0
» Views: 80

 
  USB Wall Plug and Power over Ethernet not working
Posted by: CanadianIceTech - 07-15-2016, 10:46 PM - Forum: DC Power In - Replies (10)

So I got 2 of my boards going as media centers, however I'm having some issues with power

Currently, I have 1 plugged into the USB port of a PS4, and the other into a PS3. Doing so, they will boot up and operate fine. However, doing this means that more power is being used as the PS3 has to be on, and the PS4 has to be in standby mode for the USB ports to be powered.

At first I tried using a wall charger from my phone, and it would boot fine but as soon as I opened kodi the board would reset.

Then I tried the USB port on the TV, which didn't work (not sure how much power it gives since it's the service port. I was hoping to have it turn on with the TV)

Lastly, I tried the Power over Ethernet. I got the official adapter from the kickstarter campaign. Tested the network cable and it checks out. Plugged the network cable into the adapter, and the adapter into the ethernet and mini usb power ports on the board. The router (Asus RT-N66U), wouldn't even detect anything on that port, and the board's red LED wouldn't light up.

Is there something I'm maybe doing wrong? I want to get this sorted out before I install 2 of these in my cars.


  Missing camera add on
Posted by: nicothyrael - 07-15-2016, 01:36 PM - Forum: General Discussion on PINE A64(+) - Replies (5)

Hi, a while ago I received my package with the new Pine A64 board. 


The package was open and the Camera card were not inside. I have sent two emails waiting a week or more between them, but so far nothing.  Angry Angry Angry


My tracking number was RI894203386CN
And I was backer @3753

Thank you. 
Nicolas Alonso


Exclamation Problems to Boot with Battery Only?
Posted by: Evanidus - 07-15-2016, 11:33 AM - Forum: Getting Started - Replies (7)

Hey Guys!

I just recieved my Pine64+ (2GB) and ive gotten it to boot with both Remix OS and Android and it works perfectly so far, I only got one problem and its to make it boot with a Lithium battery.

I ordered the kit that included a battery (Big Blue one with Pine64 Logo on it), ive charged it (i hope...: have it plugged into the board while having adapter plugged in?) and my board is lighting up when i got the battery plugged in, but it wont boot, no image or anything, is there anything im doing wrong?

Please help!


Ps. is anyone else having issues of not getting any sound through HDMI while running Remix OS? Works flawlessly with Android OS but wont with Remix OS.

Kind Regards,


Evanidus/Philip


  Any plans to update official images
Posted by: adeneb - 07-15-2016, 10:29 AM - Forum: General Discussion on PINE A64(+) - Replies (4)

For those of us who are not software developers, will "Pine64" ever be providing a fully functional, (all ports and parts, wifi ethernet, adjustable video resolution, working optimally) with non android OS for these boards?
I am speaking for those who wanted a harware board for integrating into new projects without having to goto a third party to get hacked images that have to be extracted,made,etc.


Lightbulb Sample GPIO codes highlighting RPi.GPIO-PineA64 and the PI bus
Posted by: MarkHaysHarris777 - 07-15-2016, 09:27 AM - Forum: Pi2, Euler and Exp GPIO Ports - Replies (6)

   

   

I have reworked my LED lab specifically for the PineA64 board demo codes (uploaded here) which highlight the RPi.GPIO-PineA64 module from github; as well the Sparkfun T cobbler breakout board and 40pin ribbon cable.

The LED layout is changed to a row of blue 5mm diodes in a single line; the GPIO pins are GP20 - GP27 (BCM Broadcom numbering) on the PI bus. 

Three files have been uploaded here for convenience sake; I may put them on github later. They are the following:

  display8bit.py     the main python3 import file using RPi.GPIO-PineA64
  dsp_patterns3.sh   the main python3 driver GPIO patterns demo script
  ssendsig.sh        the signal generator for controlling dsp_patterns3.sh

The display8bit.py file may be imported in the Python3 REPL for manual use. The script dsp_patterns3.sh uses display8bit.py (imports it) and is intended to be run in the background. The script is controlled by the ssendsig.sh script which generates either -SIGHUP, -SIGUSR1, -SIGUSR2, or -SIGINT for controlling the frequency|speed, forward pattern, reverse pattern, or keyboard interrupt respectively. They will be explained in more detain below.

   

Manual Operation of RPi.GPIO-PineA64 (Python3 REPL)

The ssendsig.sh script should be located in your path, maybe your ~/bin directory; as long as its in the $PATH. The other two scripts are located in your ~/Python3/ directory; cd into the ~/Python3/ directory.

To start the REPL for GPIO use enter:

sudo python3

>>> from display8bit import *

The display8bit.py file divides the eight (8) LEDs into two groups ( high_pins, and low_pins ) or high-order and low-order binary digits; each 4 bits in length. They may be addressed four or eight at a time. Any of the defined commands in display8bit may be used directly in the REPL main namespace. Several examples are listed below:

>>> all_on()
>>> all_off()

>>> led_on(high_pins[n])     n is binary digit 0-3
>>> led_off(high_pins[n])    n is binary digit 0-3
>>> led_on(low_pins[n])      n is binary digit 0-3
>>> led_off(low_pins[n])     n is binary digit 0-3

>>> bin_display()            not intended to be called directly
>>> dsp8_INV(0xNN)           NN 8 bit hex value low-order high-order
>>> dsp8_STD(0xNN)           NN 8 bit hex value high-order low-order

>>> walking(1, .7, "STD")    digits walk right to left
>>> walking(1, .7, "INV")    digits walk left to right

>>> counter_4bit(0x11,low_pins,.7,"STD")
>>> counter_4bit(0x11,low_pins,.7,"INV")
>>> counter_4bit(0x11,high_pins,.7,"STD")
>>> counter_4bit(0x11,high_pins,.7,"INV")

>>> counter_8bit(0x101,.250,"STD")
>>> counter_8bit(0x101,.250,"INV")

>>> end()        this command exits the REPL, and cleans up the GPIO

Scripted Operation of RPi.GPIO-PineA64 (dsp_patterns3.sh)

To start the dsp_patterns3.sh script in the background enter:

sudo -b ./dsp_patterns3.sh 

The main driver script dsp_patterns3.sh imports display8bit.py and uses it to display twelve (12) light patterns on the LED lab breadboard. The patterns are selected by sending the script (running in the background) one of four signals. Signal handlers then modify the operation of the script on the fly. 

USR1: selects on the forward patterns from an indexed list (see code)
USR2: selects on the reverse patterns from an indexed list (see code)
HUP:  changes the speed of the display
INT:  similar to ctrl-c on the keyboard... stops the background process

The signals may be sent via htop, or the kill command, or from the supplied ssendsig.sh script; examples follow:

sudo ~/bin/ssendsig.sh dsp_pattern INT
sudo ~/bin/ssendsig.sh dsp_pattern HUP
sudo ~/bin/ssendsig.sh dsp_pattern USR1
sudo ~/bin/ssendsig.sh dsp_pattern USR2

The script finds the process number from the process name (dsp_pattern) and then issues the appropriate kill command. 

The purpose of the demo codes display8bit.py is to highlight the RPi.GPIO-PineA64 module(s) and to document how to use the GPIO of input | output. At this time the module can not be used for i2c, SPI, nor pwm. 

The purpose of the demo codes dsp_patterns3.sh is to highlight a proper way of coding a Python3 script for accessing the GPIO with a 'try block'; also a way to control a background script with the use of signals and signal handlers.

While I hope that these codes will be useful, I do not guarantee that they will be suitable for any purpose what-so-ever; nor do I accept responsibility for their use or subsequent success or failure/ the user herself|himself must bear the responsibility for the use of these codes. 

If you have questions about these codes, post your comments here, or even better join us on the irc.pine64.xyz:6697 chat for a friendly discussion. You may also PM me, or send me a private message on this forum. 

marcus

edit:  PS  please notify me asap should you find errors; I will correct them immediately; and thank you !

#*****************************************************************
# author: Mark H. Harris
# license: GPLv3
#
# THIS SOFTWARE IS PROVIDED BY THE COPYLEFT HOLDERS AND
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MECHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYleft HOLDER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENCIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#*****************************************************************

Code:
ssendsig.sh


#!/bin/bash
echo
PWMPID=$(ps ax |grep -i $1 |grep -v grep |grep -v sudo |grep -v ssendsig |awk '{print $1}' )
echo "PID: $PWMPID"
if [ "$PWMPID" != "" ]
  then
    if [[ "$2" != "HUP" && "$2" != "INT" && "$2" != "USR1" && "$2" != "USR2" ]]
      then
        echo "Error: valid signals are HUP INT USR1 USR2"
      else
        exec kill -SIG$2 $PWMPID
    fi
  else
    echo "PWM_counter.sh does not appear to be running"
fi
Code:
display8bit.py



## display8bit.py
#
#   Mark H. Harris
#   v.01i
#   07-15-2016
#   Rochester, MN
#
#
## IMPORTS
from time import sleep
from sys import argv
import RPi.GPIO as GPIO

## ALL GPIO use Broadcom Numbering
GPIO.setmode(GPIO.BCM)

## PUSH BUTTON SWITCH DEFINED HERE, BUT NOT ALWAYS USED
p_switch = 19
GPIO.setup(p_switch, GPIO.IN, pull_up_down=GPIO.PUD_UP)

## BINARY ROMS 
high_pins=[23, 22, 21, 20]
for pin in high_pins:
    GPIO.setup(pin, GPIO.OUT)

low_pins=[27, 26, 25, 24]
for pin in low_pins:
    GPIO.setup(pin, GPIO.OUT)

## FUNCTION DEFINITIONS
def push_button():
    if GPIO.input(p_switch):
        return False
    else:
        return True

def led_on(pin):
    GPIO.output(pin, True)

def led_off(pin):
    GPIO.output(pin, False)

def bin_display(val, led_rom, nibble, std_inv):
    bin_digit = nibble
    if (std_inv=="STD"):
        start=0; finish=4; incrmt=1
    else:
        start=3; finish=-1; incrmt=-1
    for n in range(start, finish, incrmt):
        if (val & bin_digit):
            led_on(led_rom[n])
        else:
            led_off(led_rom[n])
        bin_digit = bin_digit<<(1)

def dsp8_STD(val):
    bin_display(val, high_pins, 0x10, "STD")
    bin_display(val, low_pins, 0x1, "STD")

def dsp8_INV(val):
    bin_display(val, low_pins, 0x10, "INV")
    bin_display(val, high_pins, 0x1, "INV")

def counter_8bit(max, t_delay, std_inv):
    for n in range(max):
        if (std_inv=="STD"):
            dsp8_STD(n)
        else:
            dsp8_INV(n)
        sleep(t_delay)

def counter_4bit(max, led_rom, t_delay, std_inv):
    for n in range(max):
        bin_display(n, led_rom, 0x1, std_inv)
        sleep(t_delay)

def walking(cycles, t_delay, std_inv):
    for m in range(cycles):
        digit=0x1
        for n in range(9):
            if (std_inv=="STD"):
                dsp8_STD(digit) 
            else:
                dsp8_INV(digit) 
            sleep(t_delay)
            digit = digit << (1)

def all_off():
    dsp8_INV(0x0)

def all_on():
    dsp8_INV(0xff)

def end():
    GPIO.cleanup()
    quit()
Code:
dsp_patterns3.sh



#!/usr/bin/python3
# dsp_patterns3.sh
#
#   Mark H. Harris
#   v.01i
#   07-15-2016
#   Rochester, MN
#
## REQUIRES v.10h display8bit.py
import display8bit as DSP
import signal as SIG

## RUN CYCLE COUNTER DISPLAYED WITH HUP SIGNAL
cycle = 0

## EXIT FLAG FROM SIGINT INTERRUPT HANDLER
interrupt_flag = False

## DISPLAY ORDER OF PATTERNS USED BY SIGUSR1 AND SIGUSR2
led_pattern_index=[2, 12, 3, 1, 4, 9, 11, 5, 7, 6, 8, 0, 10]

## BEGINNING DISPLAY PATTERN (IN THIS EXAMPLE 1)
#     led_pattern_index numbered from 0
#         pattern_index = 2
#         led_pattern_index[2] = 1  (see index above)
pattern_index=2
pattern_num = led_pattern_index[pattern_index]

## FREQUENCY SETTINGS (DELAYS) SET BY HUP
tt_delay_val=[0.023, 0.077, 0.140, 0.258, 0.70]
tt_delay_index=2
tt_delay=tt_delay_val[tt_delay_index]

## DISPLAY LED PATTERN ROMS
circular2R = [0x88, 0xc0, 0x60, 0x30, 0x11, 0x03, 0x06, 0x0c]
dual_walker= [0x81, 0x42, 0x24, 0x18, 0x24, 0x42]
side_side_steps = [0x08, 0x40, 0x02, 0x10, 0x01, 0x20, 0x04, 0x80]
two_led_wave = [0x88, 0x44, 0x22, 0x11, 0x22, 0x44]
all_leds_on_flasher = [0xff, 0x00]
high_low_bars_flasher = [0xf0, 0x0f]
alternating_flasher = [0x69, 0x96]
curtain_scanner = [0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0xf1, 0xe3, 0xc7, 0x8f]

## SIGUSR2 HANDLER FOR SELECTING PREVIOUS DISPLAY INDEX
def ssigusr2(signum, frame):
    global pattern_num
    global pattern_index
    if (pattern_index>0):
        pattern_index-=1
    else:
        pattern_index=len(led_pattern_index)-1
    pattern_num=led_pattern_index[pattern_index]
    print("\n USR1: swapping backward to previous pattern: "+str(pattern_num)+"\n")

## SIGUSR1 HANDLER FOR SELECTING NEXT DISPLAY INDEX
def ssigusr1(signum, frame):
    global pattern_num
    global pattern_index
    if (pattern_index<len(led_pattern_index)-1):
        pattern_index+=1
    else:
        pattern_index=0
    pattern_num=led_pattern_index[pattern_index]
    print("\n USR1: swapping forward to next pattern: "+str(pattern_num)+"\n")

## SIGHUP HANDLER FOR DISPLAYING INFORMATION AND ROTATING DELAY INDEX
def ssighup(signum, frame):
    global tt_delay
    global tt_delay_index
    tt_delay_top = len(tt_delay_val)-1
    if (tt_delay_index<tt_delay_top):
        tt_delay_index+=1
    else:
        tt_delay_index=0
    tt_delay=tt_delay_val[tt_delay_index]
    print("\n cycle: "+str(cycle))
    print("\n delay: "+str(tt_delay))
    print("\n HUP: presently displaying pattern: "+str(pattern_num)+"\n")

## SIGINT HANDLER FOR EXITING THE DISPLAY PROCESS
def ssigint(signum, frame):
    global interrupt_flag
    print("\n keyboard interrupt"+"\n")
    interrupt_flag = True

## SIGNAL TRAPS
SIG.signal(SIG.SIGINT, ssigint)
SIG.signal(SIG.SIGHUP, ssighup)
SIG.signal(SIG.SIGUSR1, ssigusr1)
SIG.signal(SIG.SIGUSR2, ssigusr2)

## DISPLAY FUNCTION FOR READING AND RESOLVING DISPLAY ROMS INFORMATION
def displayf(pattern, fwd_rvs):
    p_pattern=[]
    if (fwd_rvs=="RVS"):
        for n in range(len(pattern)-1, -1, -1):
            p_pattern.append(pattern[n])
    else:
        p_pattern=pattern
    for p_code in p_pattern:
        DSP.dsp8_STD(p_code)
        DSP.sleep(tt_delay)

## MAIN TRY BLOCK FOR THE DISPLAY PROCESS
while (not interrupt_flag):
    try:
        if (pattern_num==0):
            ## 0 FLASHING BARS OF GREEN AND RED
            displayf(high_low_bars_flasher, "FWD")
        if (pattern_num==1):
            ## 1 DUAL WALKING PATTERN SIMPLE
            displayf(dual_walker, "FWD")
        if (pattern_num==2):
            ## 2x2 ALTERNATE FLASHING PATTERN SIMPLE
            DSP.dsp8_STD(0xcc)
            DSP.sleep(tt_delay)
            DSP.dsp8_STD(0x33)
            DSP.sleep(tt_delay)
        if (pattern_num==3):
            ## 3 SINGLE RAPID WALKER FROM DSP
            DSP.walking(1, tt_delay, "STD")
            DSP.sleep(tt_delay)
            DSP.walking(1, tt_delay, "INV")
            DSP.sleep(tt_delay)
        if (pattern_num==4):
            ## 4 STEPS BACK-AND-FORTH LEFT-AND-RIGHT
            displayf(side_side_steps, "FWD")
            DSP.dsp8_STD(0x0)
            DSP.sleep(tt_delay)
            displayf(side_side_steps, "RVS")
            DSP.dsp8_STD(0x0)
            DSP.sleep(tt_delay)
        if (pattern_num==5):
            ## 5 CLOCK-WISE 2-LED CIRCULAR WALKING D-RIGHT
            displayf(circular2R, "FWD")
        if (pattern_num==6):
            ## 6 COUNTER CLOCK-WISE 2-LED CIRCULAR WALKING D-LEFT
            displayf(circular2R, "RVS")
        if (pattern_num==7):
            ## 7 STROBE RIGHT
            DSP.walking(1, tt_delay, "INV")
            DSP.sleep(tt_delay)
        if (pattern_num==8):
            ## 8 STROBE LEFT
            DSP.walking(1, tt_delay, "STD")
            DSP.sleep(tt_delay)
        if (pattern_num==9):
            ## 9 TWO LED WAVE DISPLAY   
            displayf(two_led_wave, "FWD")
        if (pattern_num==10):
            ## 10 ALL LEDS ON FLASHER !  
            displayf(all_leds_on_flasher, "FWD")
        if (pattern_num==11):
            ## 11 ALTERNATING PATTERN INTERESTING  
            displayf(alternating_flasher, "FWD")
        if (pattern_num==12):
            ## 12 ALTERNATING PATTERN INTERESTING  
            displayf(curtain_scanner, "FWD")
    finally:
        if interrupt_flag:
            break
        cycle+=1
        # print("cycle: "+str(cycle)+"\n") DSP.all_off()

DSP.GPIO.cleanup()


  Windows 10
Posted by: Maximum - 07-15-2016, 03:02 AM - Forum: General Discussion on PINE A64(+) - Replies (11)

Is there any availability of Windows 10 for the Pine 64 board? It would be really interesting to get it up and working with Windows Smile


  Utter disappointment makes Pine64 Useless as Media player
Posted by: papsnoek - 07-15-2016, 01:05 AM - Forum: General Discussion on PINE A64(+) - Replies (11)

Backer number #31,343

I Order a few extra items with my two Pine64 boards and waiting ages for delivery like everyone else...

When the order arrived, it was missing two Items that I ordered and contained extra items i did not order.
I have contacted support twice with no success. Not even a reply to say we are looking at this.

To be honest, this is rather pathetic. Why do I need to moan about something before anyone takes action.
First Mail was sent 14 June (A month ago), Second mail was sent 29th June (2 weeks ago) and I have still have no feedback what so ever!

Please refund me my money for the missing items and I will buy them else where.

So Far the Pine64 has been a huge disappointment for me. I order the Air Remote and HDMI to use the Pine as a Media player, only for them not to arrive so I cant use it as a Media Player. Then I find out that Kodi is not supporting the Pine64 either, but during the Kickstarter Campaign, this was one of the features... And sold as a Media player. (also not supporting HDMI CEC which is needed for a media player)

Im writing these boards off as a loss... they will become some low power linux playgrounds... Will be replacing them with Odroid boards rather which are same price and have full support from the developers and community and actually work as they describe they should.

Im hoping things change in the future, but for now these boards are going in the cupboard and I will be focusing my attention on the Odriod boards rather.

PS: I tried to upload the photo I sent to support of the missing items, but this forum not allwoing me to upload the image.


  Shipping Status
Posted by: encarta - 07-14-2016, 06:30 PM - Forum: Shipment Related Discussion - Replies (17)

Hi Pine64 Team,
My Order number is #8161851.
When I placed the order, there was banner at top of page that the order will be shipped late may 2016 or early june 2016.
Now it's mid of july, I still get no update on my order. My credit card is already charged for that order.


Lightbulb My Favorite PI Bus Pinout from raspberrypi-spy.co.uk
Posted by: MarkHaysHarris777 - 07-14-2016, 04:46 PM - Forum: Pi2, Euler and Exp GPIO Ports - Replies (10)

   

This is my favorite PI Bus pinout diagram, from the people at www.raspberrypi-spy.co.uk

The pinout is oriented the same way the pins are oriented if you look at the PineA64 board with the Euler bus at the bottom and the PI bus at the top.

This pics is good because it helps keep the special functions clear by color from the general pins, and from the grounds (all eight of them).

marcus
Big Grin

EDIT:  NOTE:  GPIO04  pin(7)  cannot be used with RPi.GPIO-PineA64 with the current dts|dtb.  Pin(7) is PL10 on the pine board, which is the S_PWM, for use as the LCD backlight brightness pulse width modulation.


  Arduino IDE on Pine64
Posted by: jrullan - 07-14-2016, 03:24 PM - Forum: Linux on Pine A64(+) - Replies (16)

Hi all,

I was happy to find out that since May Arduino released an ARM version of the IDE (currently 1.6.9). I tried installing it in my A64+ but sadly it didn't work and gives this error:

Code:
./arduino: line 34: /home/debian/Downloads/arduino-1.6.9/java/bin/java: No such file or directory


I did the same thing on my recently received CHIP and it worked without any hiccups. So, I'm wondering if the problem is related to an issue with ARM64 architecture. 

Have anyone tried to install it in their PINEs? 
Have anyone tried to compile it on the PINE? If so, how?

Thanks!!!